Próbuję wdrożyć elastyczny protokół SSL zapewniany przez CloudFlare w mojej witrynie.
Oto moja konfiguracja Nginx:
# PHP-FPM upstream; change it accordingly to your local config!
upstream php-fpm {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
## Listen ports
listen 443;
# use _ if you want to accept everything, or replace _ with domain
server_name example.com www.example.com;
location / {
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Url-Scheme $scheme;
proxy_redirect off;
proxy_max_temp_file_size 0;
}
(...rest of config...)
Jednak gdy próbuję połączyć się z witryną (Wordpress), pojawia się pętla przekierowań (chrome: ERR_TOO_MANY_REDIRECTS). Jak skonfigurować nginx, aby temu zapobiec?
źródło
To może rozwiązać problem, jeśli masz ważny certyfikat SSL. [Crypto] i wybierz
Full (strict)
jak na obrazku.Naprawdę nie trzeba aktualizować pliku konfiguracyjnego serwera WWW dla Nginx.
źródło
Odpowiedź AD7six jest bardzo dobra, choć wydaje się, że istnieje prostsze rozwiązanie, które nie wymaga reguł strony. Nie jestem pewien, czy jest to nowy dodatek od poprzednich odpowiedzi, ale zdecydowanie należy to udokumentować na tym pytaniu, zwłaszcza biorąc pod uwagę, że w momencie pisania Cloudflare otrzymujesz tylko 3 bezpłatne reguły strony.
Po włączeniu elastycznego protokołu SSL dla danej domeny możesz przewinąć
Crypto
kartę w dół i włączyć tęAlways use HTTPS
opcję. Ta opcja bezproblemowo rozwiąże problem pętli przekierowań (dokładnie wyjaśniony w odpowiedzi AD7six ).Ta opcja jest potwierdzona podczas pracy z nginx; ponadto nie powinno być żadnej konfiguracji serwera, w której ta opcja nie działa, pod warunkiem, że Elastyczny SSL jest już włączony i działa bez problemu.
źródło