Die Verwendung einer ELB pro App ist der richtige Weg.
Erstens benötigen Sie sie möglicherweise trotzdem, wenn sich jede Anwendung in einer eigenen Domäne befindet und Sie SSL unterstützen müssen. Amazon ELBs erlauben derzeit nur ein SSL-Zertifikat für jede Domain und erfordern separate ELBs für jede SSL-fähige Domain. (Wildcard-SSL-Zertifizierungen sind eine Ausnahme).
Die Herausforderung hierbei besteht darin, dass ELB-Integritätsprüfungen derzeit nicht an eine bestimmte virtuelle Domäne gerichtet werden können, die auf einer EC2-Instanz gehostet wird. (Es wird kein "Host:" - Header gesendet). ELB-Integritäts-Pings werden immer in die Standarddomäne verschoben, als hätten Sie die IP-Adresse für die EC2-Instanz in Ihren Browser geladen. Daher ist etwas Klebstoff erforderlich, um die Integritätsprüfungen für die Standarddomäne zu erhalten und dann mit dem Integritätsstatus einer bestimmten Anwendung zu antworten.
Hier ist eine funktionierende Beispielkonfiguration, die einer Nginx- server
Direktive hinzugefügt werden könnte . Es würde auf jeder der EC2-Instanzen installiert, deren Lastausgleich erfolgt.
# 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;
}
In der Einstellung "Health Check" der ELB für "first-application.com" wählen Sie "HTTP" und Port 80 aus und geben einen Pfad wie folgt ein:
/health-check/first-application.com
Wenn die obige Nginx-Konfiguration auf dem Host ausgeführt wird, wird die Anforderung in der Standarddomäne empfangen und die Antwort von der Nginx-Konfiguration auf demselben Host für https://first-application.com/api/v1/status übertragen
Bei diesem Ansatz gibt es in Nginx keine Konfiguration pro App. Solange jede App einen eindeutigen Domainnamen hat, müssen Sie nur sicherstellen, dass Sie für jede App eine entsprechende ELB einrichten.