Nginx versetzt den Browser in eine Umleitungsschleife, wenn mehrere Serverblöcke verwendet werden

Nginx versetzt den Browser in eine Umleitungsschleife, wenn mehrere Serverblöcke verwendet werden

Ich verwende Nginx, um eine Reihe von virtuellen Hosts zu hosten (oderServerblöckein der Nginx-Nomenklatur). Diese Hosts teilen sich alle dieselbe Domäne, wobei jedem eine eigene Subdomäne zugewiesen ist. Eine Subdomäne gerät in eine endlose Umleitungsschleife, was offensichtlich unerwünschtes Verhalten ist.

Achtung: Ich habe meinen Domänennamen redigiert und durch ersetzt <mysite>.

Die Stammdomäne - www.<mysite>.comempfängt Anfragen wie erwartet. Sie leitet auch HTTP-Anfragen an HTTPS weiter. Sie wird in konfiguriert <mysite>-www.

Die Subdomäne assets.<mysite>.comempfängt auch wie erwartet Anfragen. Sie ist nicht so konfiguriert, dass HTTP auf HTTPS umgeleitet wird, es wird jedoch kein Protokoll verwendet. Es gibt kein Problem. Sie ist in konfiguriert <mysite>-holding.

Die endgültige Subdomäne soft.<mysite>.comist identisch zu konfiguriert, assets.<mysite>.comscheitert jedoch. Stattdessen schickt sie den Browser in eine Umleitungsschleife und verweist jedes Mal auf https://soft.<mysite>.comDies, obwohl in der Konfigurationsdatei für diesen virtuellen Host keine solche Einstellung vorhanden ist. Es ist in konfiguriert <mysite>-soft.

Konfiguration für <mysite>-www:

server {
    server_name www.<mysite>.com;

    listen 80 default_server ;
    listen [::]:80 default_server;

    location / {
        return 301 https://$server_name$request_uri;
    }

    root /var/www/html;
}

server {
    listen              443 ssl default_server;
    ssl_certificate /etc/letsencrypt/live/www.<mysite>.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/www.<mysite>.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;

    root /var/www/html;
    server_name www.<mysite>.com;
    error_page 404 /404.html;

    location / {
        limit_req zone=mylimit burst=20 nodelay;
        try_files $uri $uri/ =404;
        index index.html index.htm;
    }
}

Konfiguration für <mysite>-holding:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;

    server_name assets.<mysite>.com;

    ssl_certificate /etc/letsencrypt/live/assets.<mysite>.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/assets.<mysite>.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf;

    root /var/www/holding/html;

    location / {
        limit_req zone=mylimit burst=20 nodelay;
        try_files $uri $uri/ =404;
        index index.html;
    }

Die Konfigurationsdatei soft.<mysite>.comist identisch mit der obigen, außer dass dort, wo „Assets“ steht, „soft“ steht. Und dennoch tritt sie in diese endlose Umleitungsschleife ein.

Ich habe versucht, die Standortrichtlinie zu ändern. Ich habe konsultiertdie Dokumentedie besser waren als erwartet. Trotzdem läuft es in einer Schleife. Hilfe ist willkommen!

Antwort1

Tatsächlich stellte sich folgendes Problem heraus:

Ich hatte keinen ordnungsgemäßen symbolischen Link von /sites-enabledzu erstellt /sites-availableund es wurde ein altes Duplikat verwendet, <mysite>-wwwwas die Umleitungsschleife verursachte.

Die Lösung bestand darin, die Datei wie oben in meiner Frage beschrieben zu konfigurieren. Entweder sie in Sites-enabled zu kopieren oder sie ordnungsgemäß mit einem symbolischen Link zu verknüpfen, löst das Problem für jeden, der sich in einer ähnlichen Lage befindet.

Mein Dank geht an Sie.

verwandte Informationen