使用非 http 重定向的 SSL 会导致重定向循环吗?

使用非 http 重定向的 SSL 会导致重定向循环吗?

我最近在我的网站上设置了 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;

相关内容