【发布时间】:2017-08-06 19:08:40
【问题描述】:
我正在尝试设置 nginx 以返回所有 http 请求的 https url。 问题是,它返回的 https url 没有 www 导致无效的 url。
这是我的配置:
server {
listen 80; server_name my_server;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/my_pem.pem;
ssl_certificate_key /etc/ssl/my_key.key;
server_name my_server;
access_log /var/log/nginx/my_log.access.log;
...
}
我已经尝试在 server_name 中包含 www,并为 301 返回指定带有 www 的显式 url。
一切都导致无效的网址。
我注意到,当我登录应用程序并将 https 更改为 http 并触发请求时,重定向会起作用。当我注销时,重定向失败并呈现没有 www 的 https url。
然后我尝试只使用 server_name 像这样:return 301 https://$server_name 但这也不起作用。
我希望用户不必担心他们指定的网址。网址如下 www.one.two-three.com
>>
这可行:http://www.one.two-three.com/some_request
这不是:http://www.one.two-three.com
>>
>>
通过在 Chrome/Chromium 的 URL 行中键入 www.one.two-three.com,它会重定向到 https://www.one.two-three.com。
在 Firefox 中它返回 https://one.two-three.com
>>
有人可以帮忙吗?
谢谢。
塞巴
【问题讨论】:
-
清理浏览器缓存,因为 301 是可缓存重定向。你可能会得到越野车。使用例如 303 进行测试。
-
工作就像一个魅力:) 谢谢!