Nginx-Remove WWW von HTTPS

3279
NetStudent

Ich möchte um Hilfe bei der folgenden Nginx-Konfiguration bitten, damit URLs wie z. B. https://www.mywebsite.comneu geschrieben werden https://mywebsite.com. Ich verwende derzeit die folgende Konfiguration:

server { server_name www.mywebsite.com; return 301 $scheme://mywebsite.com$request_uri; } server { listen 80; server_name mywebsite.com;  # Some more settings... } server { listen 443 ssl; server_name mywebsite.com;  ssl_certificate path_to_ssl_certificate; ssl_certificate_key path_to_ssl_certificate_key;  # Some more settings... } 

In diesem Fall handelt es sich bei dem von mir verwendeten Zertifikat um ein Wildcard-SSL-Zertifikat, das mit OpenSSL auf dem Server selbst selbst signiert wurde (Ubuntu 12.04). Was passiert, ist, dass www.mywebsite.comkorrekt umgeleitet wird mywebsite.com, aber https://www.mywebsite.com nicht umgeleitet wird https://www.mywebsite.com(dh, es wird wwwimmer noch angezeigt, wenn die Seite in einem Browser angezeigt wird). Was kann ich falsch machen?

1

2 Antworten auf die Frage

3
Dmitry Verkhoturov

Die Lösung repariert den ersten Serverblock darauf:

server { listen 80; listen 443; server_name www.mywebsite.com; return 301 $scheme://mywebsite.com$request_uri; } 

Sie haben beispielsweise vergessen, die Verbindungen zu www.mywebsite.com über den SSL-Port zu erhalten, das ist alles. Übrigens, es ist der beste Weg, um www vom Namen der Site zu entfernen, eine gute Wahl.

0
mgorven

Ihre Weiterleitung erfolgt in einem virtuellen Host, der nur an Port 80 überwacht wird. Um Anfragen, die über SSL eingehen, umzuleiten, benötigen Sie einen virtuellen Host, der Port 443 mit SSL überwacht. Wenn Ihre Browser nicht alle SNI unterstützen, können Sie nur einen virtuellen SSL-Host haben. Daher muss die Regel in Ihren vorhandenen SSL- serverBlock einfließen .

if ($host = www.mywebsite.com) { rewrite ^ https://mywebsite.com$request_uri? permanent; } 
Aufgrund von http://wiki.nginx.org/IfIsEvil nach unten bewertet Dmitry Verkhoturov vor 8 Jahren 0