L'utilizzo di un ELB per app è il modo per andare qui.
Innanzitutto, potresti averne bisogno comunque se ogni applicazione si trova nel proprio dominio e devi supportare SSL. Gli ELB di Amazon attualmente consentono solo un certificato SSL per ciascun dominio, che richiede ELB separati per ciascun dominio abilitato per SSL. (Le certificazioni SSL Wildcard sono un'eccezione).
La sfida qui è che i controlli di integrità ELB non possono attualmente essere indirizzati a un particolare dominio virtuale ospitato su un'istanza EC2. (Non viene inviata l'intestazione "Host:"). I ping di integrità ELB passano sempre al dominio predefinito, come se l'utente avesse caricato l'indirizzo IP per l'istanza EC2 nel browser. Quindi è necessaria della colla per ricevere i controlli di integrità sul dominio predefinito e quindi rispondere con lo stato di integrità di una particolare applicazione.
Ecco una configurazione di esempio funzionante che potrebbe essere aggiunta a una server
direttiva Nginx . Sarebbe installato su ciascuna delle istanze EC2 con bilanciamento del carico.
# This goes in the `server` block noted by 'default_server', often /etc/nginx/sites-enabled/default
# All AWS Health Checks from the ELBs arrive at the default server.
# Forward these requests on the appropriate configuration on this host.
location /health-check/ {
rewrite ^/health-check/(?<domain>[a-zA-Z0-9\.]+) /api/v1/status break;
# Lie about incoming protocol, to avoid the backend issuing a 301 redirect from insecure->secure,
# which would not be considered successful.
proxy_set_header X-Forwarded-Proto 'https';
proxy_set_header "Host" $domain;
proxy_pass http://127.0.0.1;
}
Nell'impostazione "Verifica dello stato" dell'ELB per "first-application.com", selezionare "HTTP" e Porta 80 e immettere un percorso come:
/health-check/first-application.com
Con la configurazione Nginx sopra in esecuzione sull'host, la richiesta sarebbe ricevuta sul dominio predefinito e proxy la risposta dalla configurazione Nginx sullo stesso host per https://first-application.com/api/v1/status
Con questo approccio non esiste una configurazione per-app in Nginx. Finché ogni app ha un nome di dominio univoco, devi solo assicurarti di impostare un ELB per ogni app in modo appropriato.