Es ist nicht möglich, den Zielhost basierend auf der Portnummer zu erkennen. Der DNS-Name bestimmt allein, wo Ihr Browser eine Verbindung herstellt.
Aber Sie können immer noch erreichen, was Sie wollen, nur nicht nach Port-Nummer.
Sie können Ihre CloudFront-Verteilung so konfigurieren, dass Anforderungen abhängig von dem Pfad in der URL an Ihre statische Website oder API weitergeleitet werden.
Um dies zu erreichen, würden Sie mehrere Ursprünge und mehrere Verhaltensweisen in Ihrer Cloudfront Verteilung zu konfigurieren:
/api/*
-> EC2 Herkunft
- Alles andere -> Statische Webseite Herkunft
Um Ihre Browser erscheint es als eine einzige Website. Wenn Sie https://www.example.com/page1.html
anfordern, leitet CloudFront die Anfrage an die statische Website weiter. Wenn Sie https://www.example.com/api/MyRestMethod
anfordern, leitet CloudFront die Anfrage an Ihren EC2 weiter.
Damit können Sie auch das gleiche ACM-Zertifikat für HTTPS zwischen Ihrer API und Ihrer statischen Website verwenden.
Dies verlangsamt die API-Leistung, da eine Anfrage 2 Hops hat, zuerst zum CloudFront-Host und dann zum EC2-Host? Ich denke, um der Leistung willen ist es besser, eine Subdomain für API zu verwenden (z. B. "api.example.com"), so dass es nur einen einzigen Sprung direkt zum EC2-Host gibt. – Avery235
Es kommt darauf an. Es werden 2 Hops sein, jedoch wird der erste Hop ein offenes Internet zu einem nahe gelegenen CloudFront Edge-Standort sein, dann ein zweiter Hop über das AWS dedizierte Netzwerk. Definitiv wert Benchmarking :) –
Es würde immer noch etwa 100ms zum nächstgelegenen Rand Ort. Scheint es nicht wert, bedenkt man, dass die Verwendung der gleichen Domain (anstelle einer Subdomain wie 'api.example.com') keinen praktischen Vorteil hat? – Avery235