Wie richte ich Nginx so ein, dass für verschiedene URLs auf einer einzelnen Site SSL/Nicht-SSL verwendet wird, aber immer SSL verwendet wird, wenn der Benutzer ausdrücklich https in die Adressleiste des Browsers eingibt?

Wie richte ich Nginx so ein, dass für verschiedene URLs auf einer einzelnen Site SSL/Nicht-SSL verwendet wird, aber immer SSL verwendet wird, wenn der Benutzer ausdrücklich https in die Adressleiste des Browsers eingibt?

Mein aktuelles nginx.confsieht ungefähr so ​​aus:

server {
    listen      80;
    server_name www.example.com;

    root /var/www/;
    location / {
    }
    location /users {
        rewrite ^ https://$http_host$request_uri? permanent;
    }
}

server {
    listen      443 ssl;
    server_name www.example.com;

    root /var/www/;
    location /users {
    }
    location / {
        rewrite ^ http://$http_host$request_uri? permanent;
    }
}

Mit dieser Konfiguration wechselt die Verbindung von/zu SSL/Nicht-SSL, wenn ein Benutzer durch die Seiten der Site navigiert, SSL für URLs, die mit beginnen, /usersund Nicht-SSL für alle anderen URLs. Das Ergebnis ist, dass die resultierende Seite, selbst wenn der Benutzer explizit https://www.example.com/in die Adressleiste des Browsers eingibt, zu umgeleitet wird http://www.example.com/.

Gibt es eine Möglichkeit, die automatische URL-Umschreibung zwischen SSL/Nicht-SSL wie durch die obigen Einstellungen zu implementieren, aber trotzdem die explizite SSL-Anforderung zu berücksichtigen, wenn sie https://vom Benutzer explizit in die Adressleiste des Browsers eingegeben wird?

Antwort1

Aus Serversicht gibt es keine Möglichkeit, die Anfrage durch das Folgen eines Links, das Crawlen einer Site oder das Eingeben der vollständigen Adresse in die Adressleiste zu unterscheiden.

Wenn Sie eine Adresse eingeben, sendet der Webbrowser eine HTTP-Anfrage an Ihren Webserver. Wenn Sie https eingegeben haben, wird versucht, eine Verbindung zu Port 443 herzustellen (standardmäßig). Die Anfrageheader enthalten keine Informationen darüber, ob der Benutzer die Anfrage eingegeben hat oder ob die Anfrage beispielsweise von einem Bot gecrawlt wurde.

Sie können lediglich SSL für bestimmte Benutzeragenten beibehalten und für andere umleiten.

verwandte Informationen