2016-04-29 3 views
0

ich habe mehrere Domains wieist es möglich, eine serverbasierte Architektur für dieses Ziel zu erstellen?

x.static.abc.com 
y.static.abc.com 
z.static.abc.com 

ich will Route53 & Cloudfront & s3 verwenden statische Inhalte zu dienen.

, wenn eine Anfrage an x.static.abc.com/1.png ich brauche es zu weich Rewrite geschickt abc.com/static/x/1.png.

Ich möchte keine Umleitung Anfrage mit 301 und 302 Antwort. Daher möchte ich keine Umleitungsregeln in S3 unter Website-Hosting-Option aktivieren verwenden.

Gibt es eine Möglichkeit, es zu tun? Ich brauche deine Lösungen oder Ratschläge. Danke allen.

edit: i verwenden Route53 & Cloudfront & s3, mehr als 4 Jahren. Bei dieser Frage geht es nicht um Grundlagen wie "Wie definiere ich DNS-Einstellungen im Router53?".

i erstellt Eimer in S3 mit x.static.abc.com benannt, fähigen Website-Hosting-Einstellungen in den Eigenschaften, i Endpunkt Route53 hinzugefügt und hinzugefügt Routing-Regeln Regel Umleitung wie:

<RoutingRules> 
    <RoutingRule> 
     <Condition> 
      <KeyPrefixEquals>..</KeyPrefixEquals> 
     </Condition> 
     <Redirect> 
      <ReplaceKeyWith>...</ReplaceKeyWith> 
     </Redirect> 
    </RoutingRule> 
</RoutingRules> 

aber Das ist nicht das, wonach ich suche. Weil es leitet Anfragen mit 301 oder 302

ich suche nach einer Möglichkeit, wie CloudFlare:

Resolve außer Kraft setzen (nur Enterprise): Ändert die Ursprungsadresse für die Anfrage an die URL. Benutzer sehen den Domainnamen in der Adresszeile des Browsers , aber der Inhalt wird von der URL im Feld resolve geliefert. https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-

Antwort

1

Ja, es ist möglich. Aber der Ansatz hat einen erheblichen Nachteil - Sie sollten nicht static.abc.com verwenden, sondern vorzugsweise eine separate Domain. Warum? Cookies;)

+0

gute Nachrichten, wie kann ich das tun? – mst

+1

Das Erlernen der Grundlagen der Technologie, die Sie verwenden, würde helfen. Sonst jemanden einstellen. Wir sind eine Frage-und-Antwort-Site, nicht eine Website, die für mich kostenlos ist. – TomTom

+0

meiner Meinung nach ist dies nicht die Grundlagen, dies ist ein fortgeschrittener Usecase. Danke für die Antwort trotzdem. – mst

0

tun dies mit HAProxy auf EC2 wäre trivial, aber wenn wir gezwungen sind, nur AWS-Managed-Angebote verwenden, hier ist die nächste man bekommen kann (und es scheint ziemlich nahe):

erstellen eine Cloudfront-Verteilung mit der folgenden Konfiguration:

  • alternative Domänennamen für die Verteilung eingestellt

  • Ursprungsserver Beispiel x.static.example.com.com mit Ursprung Pfad (auf dem gleichen Bildschirm wie das Ursprungsserver, nicht mit dem Pfadmuster im Cache-Verhalten zu verwechseln sind) auf /static/x

  • Standard-Cache-Verhalten nach vorn an den Ursprungsserver, aber so konfiguriert ist, nicht die Host: Kopf

  • Karte x.static.example.com in Route 53 auf die neue Cloudfront Verteilung an die weiße Liste setzen.

Der Nettoeffekt dieser Konfiguration ist, dass die eingehenden Host-Header, einmal erkannt und verwendet, um die Anforderung an diese Verteilung abzubilden, wird verworfen, und der Hostname des Ursprungs-Host wird als Host-Header gesendet werden.

Original-Anfrage kommt in Cloudfront:

GET /images/lolcat.jpg HTTP/1.1 
Host: x.static.example.com 

Anfrage von Cloudfront geschickt an den Ursprungsserver:

GET /static/x/images/lolcat.jpg HTTP/1.1 
Host: example.com 

scheint echt.

Sie müssten für jeden Hostnamen eine davon verwenden, da es keine dynamische Zuordnung gibt, aber CloudFront berechnet nicht die Existenz einer Verteilung - nur der Verkehr - also, kein Schaden, dort. Ich denke, dass das oben genannte für eine ziemlich direkte Lösung sorgt.