AWS offre un modo per indirizzare il traffico HTTPS verso due diverse istanze EC2 in base al percorso della directory?


10

Mi chiedevo se quanto segue fosse possibile con le offerte AWS?

https://www.example.com/a/-> servito da Apache sull'istanza EC2 A

https://www.example.com/b/-> servito da Apache sull'istanza EC2 B

Per chiarire, non voglio che i file in un percorso di directory si trovino sulla stessa istanza del server dei file nell'altro percorso di directory.

Capisco che ciò sia possibile con un proxy di qualche tipo, ma esiste una soluzione più semplice con una delle offerte AWS.

Il bilanciamento del carico EC2 non sembra consentire la commutazione in base al percorso della directory. Route 53 funziona a livello DNS, che non ha informazioni sul percorso per restituire gli IP in base a quello.


Il bilanciamento del carico EC2 è così stupido che non legge le Host:intestazioni e filtra il traffico fasullo. Sembra improbabile che aggiungano tutte le funzionalità come stai chiedendo se guardare le intestazioni è troppo lavoro per loro. Misericordiosamente hanno altre opzioni.
pulcini,

Risposte:


29

Utilizza l' AWS Application Load Balancer , che esegue il routing basato sul percorso . Quel secondo link è un tutorial su come farlo.

In breve, configuri il tuo ALB come di consueto, quindi segui questi passaggi (copiato dal tutorial AWS):

  • Nella scheda Ascoltatori , utilizzare la freccia per visualizzare le regole per l'ascoltatore, quindi selezionare Aggiungi regola . Specificare la regola come segue:

  • Per Nome gruppo target , selezionare il secondo gruppo target che è stato creato.

  • Per Modello percorso, specificare il modello esatto da utilizzare per il routing basato sul percorso (ad esempio, / img / *). Per ulteriori informazioni, consultare Regole del listener.

  • Scegli Salva .


Grazie! Inizialmente ho controllato EC2 Application Load Balancer, ho seguito la procedura guidata, ma non ne ho mai creato uno. La procedura guidata non ha fornito un'opzione di percorso. Come ha sottolineato il tutorial, bisogna prima crearlo e poi modificare le regole.
Joseph Shih,

9

Oltre all'eccellente risposta di Tim, puoi farlo anche con CloudFront .

Innanzitutto, crea la tua distribuzione , aggiungendo le origini per l'istanza EC2 A e l'istanza B EC2 (che potrebbero anche essere bilanciatori di carico, host non AWS o persino bucket S3).

Quindi, imposta le regole di comportamento della cache per mappare / a / * e / b / * alle origini appropriate.

L'opportunità o meno di utilizzare CloudFront a questo scopo dipende dall'applicazione e dalla necessità di una rete CDN.


4
Questo potrebbe valere anche se volevi /a*e /b*essere gestito da servizi diversi, account diversi, regioni diverse o anche un percorso gestito da qualcosa che funziona all'interno di AWS e l'altro altrove. CloudFront ha molti casi d'uso che concettualmente non richiedono affatto una CDN.
Michael - sqlbot,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.