【发布时间】: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