Konfigurationskonflikt zwischen zwei Nginx-Sites

Konfigurationskonflikt zwischen zwei Nginx-Sites

Ich habe nginx für eine meiner Domänen konfiguriert. Es fungiert als Frontend für den Wildfly-Anwendungsserver. Eines Tages beschloss ich, auf derselben Maschine eine Betatestumgebung zu konfigurieren. Also fügte ich der Konfiguration eine weitere Subdomäne hinzu. Nach dem Neustart stellte nginx die Ausführung der ersten Anwendung ein. Meine Konfigurationsdateien sind:

Haupt-Subdomäne:

server {
    listen 80;
    server_name sub.example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name sub.example.com;

    ssl_certificate           /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key       /etc/nginx/ssl/sub.example.com.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/sub.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
    }
}

Test-Subdomäne:

server {
    listen 443;
    server_name sub-test.example.com;
    return 301 http://$host$request_uri;
}

server {

    listen 80;
    server_name sub-test.example.com;


    access_log            /var/log/nginx/sub-test.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

    }
}

Ich muss hinzufügen, dass jede der oben genannten Konfigurationen einzeln wie erwartet funktioniert. Zusammen funktionieren sie jedoch nicht. Die Anforderung der ersten von ihnen gibt den HTTP-Status „NICHT GEFUNDEN“ zurück.

Natürlich kann das Problem auch auf meinem Wildfly-Server liegen. Er ist für die Handhabung virtueller Hosts konfiguriert und ich bin mir nicht sicher, ob das in Ordnung ist. Aber wenn beide Anwendungen ausgeführt werden und nur eine von ihnen von nginx geproxied wird, funktioniert es einwandfrei.

Danke für die Hilfe.

Antwort1

Patryk, leider kannst du nicht mehr als einen namenbasierten HTTPS-Server festlegen. Die Erklärungen sind lang, aber du kannst sie überprüfenHierfür einige ausführlichere Informationen und Beispiele (basiert auf Apache, habe keine Ahnung von Nginx)

Antwort2

Sie können mehr als eine https-Site verwenden.

Die Technologie wird SNI oder Server Name Indication genannt.Referenz

Indem Sie den SSL-Teil aus den Serverkonfigurationen herausnehmen, reduzieren Sie auch den Aufwand für die Konfiguration der Zertifikate. Ich verwende die folgende Struktur auf meinen Reverse-Proxys:

sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf

ssl.conf enthält dann:

ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;

Eine weitere Möglichkeit wäre die Verwendung separater Zertifikate mit unterschiedlichen gemeinsamen Namen.

verwandte Informationen