【问题标题】:nginx redirect loop with ssl带有 ssl 的 nginx 重定向循环
【发布时间】:2014-06-01 01:19:48
【问题描述】:

这是一个与Nginx configuration leads to endless redirect loop 非常相似的问题,但该讨论尚未让我找到答案。我正在学习如何使用 nginx 和 ssl,一切都在常规的 http://example.com 方面完美运行,但是当路由到 https://example.com/admin 时,我反而看到:

这个网页有一个重定向循环

这是我的配置文件:

map $uri $example_org_preferred_proto {
        default "http";
        ~^/(images|css|javascript)/ "none";
        ~^/admin/ "https";
}

server {
    listen 80;
    root /usr/share/nginx/www/example.com/blog;

    server_name example.com;
        if ($example_org_preferred_proto = "https")
            return 301 https://example.com$request_uri;
        }

    location ~ / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:2368;
    }

}

server {
    listen 443;
    ssl on;
    root /usr/share/nginx/www/example.com/blog;

    server_name example.com;
    ssl_certificate /usr/share/nginx/<redacted>.crt;
    ssl_certificate_key /usr/share/nginx/<redacted>.key;
    if ($example_org_preferred_proto = "http") {
        return 301 http://example.com$request_uri;
    }

    location ~ / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:2368;
    }


}

基本上我想要完成的是拥有一个通常未加密运行的网站,但是当我指向我的管理页面时,浏览器会重定向到 https 并加密我的登录。

注意:映射的想法来自http://www.redant.com.au/ruby-on-rails-devops/manage-ssl-redirection-in-nginx-using-maps-and-save-the-universe/,似乎比使用重写更好的方法

【问题讨论】:

    标签: redirect ssl nginx redirect-loop


    【解决方案1】:

    当 nginx 遇到https 协议时,它认为它仍在使用http 作为协议并且没有与其余的标头一起转发,请尝试添加:

    proxy_set_header        X-Forwarded-Proto $scheme;
    

    在您的位置块中进行修复。

    【讨论】:

    【解决方案2】:

    我玩弄了其他答案,但对我没有任何帮助。然后我意识到,由于我使用 Cloudflare,问题可能不在服务器上,而是在 Cloudflare 上。瞧,当我将 SSL 设置为 Full (Strict) 时,一切正常!

    【讨论】:

    • 我已经尝试对这个进行排序 HOURS 了。谢谢你,解决了我的问题!
    • 谢谢,我在这里遇到了同样的问题,更新 cloudflare 设置后它工作正常。
    • 对我来说也是这样,ubuntu 20.04.3全新安装nginx。在 Cloudflare 中将加密模式从灵活设置为完全解决了 301 重定向循环。
    猜你喜欢
    • 2015-02-26
    • 2019-09-20
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2017-04-10
    相关资源
    最近更新 更多