添加 SSL 证书后,我的网站出现过多重定向循环(nginx)

添加 SSL 证书后,我的网站出现过多重定向循环(nginx)

您好,感谢您的帮助。我最近为我的网站添加了 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 服务的块中。

相关内容