Wie kann ich von https zu http umleiten?
ich habe den Code unten, aber es scheint nicht zu funktionieren.
server {
listen 443;
server_name example.com;
rewrite ^(.*) http://example.com$1 permanent;
}
Die Antwort oben wird funktionieren. Sie müssen ein selbst signiertes Zertifikat (oder ein echtes Zertifikat) erstellen und nginx als solches konfigurieren:
server {
listen *:443;
ssl on;
server_name domain.com;
rewrite ^(.*) http://domain.com$1 permanent;
ssl_certificate /data/certs/domain.crt;
ssl_certificate_key /data/certs/domain.key;
}
Wenn es sich um ein selbstsigniertes Zertifikat handelt, gibt der Browser eine hässliche Warnung aus.
Aufbauend auf Jbergers Kommentar sollte eine Konfiguration funktionieren, die funktionieren sollte:
server {
listen *:80;
server_name example.com;
}
server {
listen *:443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.cert;
ssl_certificate_key /etc/ssl/private/example.com.key;
return 301 http://$server_name$request_uri;
}
Sie müssen zwei separate Serverblöcke erstellen:
Port 443 (HTTPS) - Definieren Sie alles wie PHP, 404, Home, Root usw. in diesem Block. Auch wenn Sie https://www.example.com zu https://example.com umleiten möchten oder umgekehrt, tun Sie dies hier wie bei @coulix getan.
Port 80 (HTTP) - Hier verwenden Sie nur:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# Redirect HTTP to HTTPS
return 301 https://example.com$request_uri;
}
if ($Host = 'foo.com') {
rewrite ^/(.*)$ http://www.foo.com$1 permanent;
}