当前位置:  开发笔记 > 编程语言 > 正文

nginx重定向循环与ssl

如何解决《nginx重定向循环与ssl》经验,为你挑选了1个好方法。

这是一个非常类似的问题,Nginx配置导致无休止的重定向循环,但该讨论还没有让我得到答案.我正在学习如何使用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/.crt;
    ssl_certificate_key /usr/share/nginx/.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/和似乎比使用重写更好的方法



1> John..:

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

proxy_set_header        X-Forwarded-Proto $scheme;

在你的位置块来修复它.


谷歌让我在这里,你解决了我的问题.谢谢!
这是我失踪的一件,谢谢,这解决了我的问题
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有