Porównaj ceny domen i usług IT, sprzedawców z całego świata

Nginx: przekierowanie http na https (błąd: zbyt wiele przekierowań)


Uruchamianie Nginx i próba przekierowania:

www na inną niż www
http do https

Zdaję sobie sprawę, że są podobne tematy, ale żaden z nich nie jest związany z tym samym scenariuszem.
Zainstalowałem Webmin/Virtualmin i Fast-CGI. Mam wiele kont/witryn na tym serwerze. W przypadku mysite jest to blok serwera:
server {
listen my_server_IP;
server_name example.com www.example.com;
return 301 [url=https://example.com]https://example.com[/url]$request_uri;
root/home/example/public_html;
index index.html index.htm index.php;
access_log/var/log/virtualmin/example.com_access_log;
error_log/var/log/virtualmin/example.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME/home/example/public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT/home/example/public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/php-nginx/148180748420424.sock/socket;
}
# htaccess
location/{
try_files $uri $uri//index.php?$args;
}
#
listen my_server_IP:443 ssl;
ssl_certificate/home/example/ssl.cert;
ssl_certificate_key/home/example/ssl.key;
}

Konfiguracja, jak wygląda teraz, nie jest moją pracą, z wyjątkiem bitu #htaccess (przekonwertowanego z Apache .htaccess, aby zawierał „ładne linki” w Wordpress) i linii „return 301”.
Certyfikat SSL od LetsEncrypt, jeśli ma to znaczenie.
Zapisałem i ponownie uruchomiłem Nginx.
Żądanie witryny w Chrome wyświetla komunikat „ERR_TOO_MANY_REDIRECTS”
Co ja robię źle? Czy muszę coś dodawać lub usuwać?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To jest uproszczona wersja twojej obecnej konfiguracji (bez wszystkich bitów, które obecnie nie robią nic sensownego) z dodanymi adnotacjami, dzięki czemu możesz zobaczyć, co się dzieje. Ostatnie dwie linijki po prostu odkładają wszystko na początek. Stąd wiele błędów przekierowań.
server {
listen my_server_IP; #listen on IP x.x.x.x
listen my_server_IP:443 ssl; #listen on IP x.x.x.x on 443
server_name example.com www.example.com; #Of the requests on IP x.x.x.x look for those with with one of these headers. send to line below
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send everything to the line above
}

To jest to, czego potrzebujesz, możesz użyć
         if
oświadczenie, ale nie podawaj go tym razem, abyś wyraźnie widział, co się dzieje. Jest więcej linii, ale zadziała.
server {
listen my_server_IP;
server_name example.com www.example.com; #Listen for non-https requests
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send to the correct https address
}
server {
listen my_server_IP:443 ssl;
server_name www.example.com; #Listen for https (www) requests
return 301 [url=https://example.com]https://example.com[/url]$request_uri; #Send to the correct https
ssl_certificate/home/example/ssl.cert;
ssl_certificate_key/home/example/ssl.key;
}
server {
listen my_server_IP:443 ssl;
server_name example.com;
ssl_certificate/home/example/ssl.cert;
ssl_certificate_key/home/example/ssl.key;
<Rest of your config from above, fastcgi etc>
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się