0

Ich habe meine statische Website auf CloudFront gehostet.CloudFront statische Website und EC2 API auf derselben Domain

Gibt es eine Möglichkeit für mich, den gleichen Domainnamen, aber einen anderen Port für API-Aufrufe an eine EC2-Instanz zu verwenden?

Eg. example.com:3000 sollte an die EC2-Instanz umgeleitet werden, während example.com (aka example.com:443 oder example.com:80) an CloudFront umgeleitet werden sollte.

Antwort

2

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.

+0

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

+0

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 :) –

+0

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

Verwandte Themen