您好,感谢您的帮助。我最近为我的网站添加了 SSL 证书。它工作了一段时间,但现在我在浏览器中收到“过多重定向循环”的提示。我对服务器了解不多(我正在遵循在线指南),所以这可能只是一个新手错误。
文件如下:
upstream app_server {
server unix:/var/run/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:80 default ipv6only=on;
root /home/example/public;
server_name www.example.com;
rewrite ^(.*) https://www.example.com$1 permanent;
ssl_certificate /example.com.chained.crt;
ssl_certificate_key /example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
index index.htm index.html;
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|$
try_files $uri @app;
}
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
答案1
这是一个新手常犯的错误。
您已将重定向放置在 httpsserver
块中:
rewrite ^(.*) https://www.example.com$1 permanent;
这只是重定向回相同的 URL。
删除它后,应该就没问题了。重定向应该只在端口 80 上提供 http 服务的块中,而不是在端口 443 上提供 https 服务的块中。