我最近在我的网站上设置了 letsencrypt,SSL 运行正常。但是,当我将 Nginx 设置为将 HTTPS 重定向到 HTTPS 时,我遇到了重定向循环,当您访问网站并刷新时,URL 会在 和 之间来回example.com
变化https://example.com
。
这是我的配置:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
root /var/www;
index index.html;
# ssl_certificate, etc...
location / {
try_files $uri $uri/ /index.html =404;
}
}
我在这里做错了什么导致了重定向循环?
答案1
尝试添加ssl 开启;在 listen 443 ssl; 行下,禁用禁用 SSLv3
server {
listen 80;
server_name example.com www.example.com;
listen 443 ssl;
ssl on;
server_name example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
rewrite ^(.*) https://example.com$1 permanent;
}
...
或者您也可以使用返回它的速度比改写在 niginx 位置块中:
location / {
return ^(.*) https://example.com$1 permanent;
}
SSL 完成后,您可以在以下位置测试您的 SSL 证书https://www.ssllabs.com
要创建链式证书:
cat www.example.com.crt bundle.crt > www.example.com.chained.crt
ssl_certificate www.example.com_chain.crt;
ssl_certificate_key www.example.com.key;