请教一个 nginx rewrite 问题,www->non-www 强制 https

2016-02-07 10:24:01 +08:00
 Bac2
跳转需求是这样的
强制所有连接走 https
且带 www301 到不带 www
我的配置
server {
listen 80;
server_name abc.com www.abc.com;
return 301 https://abc.com$request_uri;
}
server {
listen 443 ssl;
server_name abc.com;
ssl_certificate ***;
ssl_certificate_key ***;
*****
}

现在的状态是
http://www.abc.com
http://abc.com
跳转到 https://abc.com
可是 https://www.abc.com 不跳转
第一个 server 内加 listen 443 ssl;出错(ノ=Д=)ノ┻━┻
5161 次点击
所在节点    NGINX
28 条回复
Andy1999
2016-02-07 15:00:53 +08:00
https 301 先验证证书可信否 可信才会跳转 因此单独写一个 server
Return2legacy
2016-02-07 15:41:07 +08:00
这两天刚好也在弄这个,但是在做 ssl 检测的时候不知道为什么会出很多问题,评分只有 C ,最后还是只做了 2 个 serve , 80 的 301 重定向,以及主 server 监听 443 ,回到 A+。
just1
2016-02-07 16:08:34 +08:00
这不是最基本的 nginx 配置吗,上面你们在干嘛。。
aprikyblue
2016-02-07 16:33:29 +08:00
@shyling
咱只配了 HSTS ,发起 HTTP 仍然正常返回内容,但是包含 HSTS 头。
识别出 HSTS 的浏览器 /蜘蛛,自己就转 HTTPS 了。
不支持的继续 HTTP 也正常
aprikyblue
2016-02-07 16:38:37 +08:00
> 第一个 server 内加 listen 443 ssl;
如果这样,对于 SSL+abc.com ,它是要第一个 server 还是第二个 server 。。。

> 搞不懂为啥两个 443 server 块合在一起就会出错。。。
有个 301 呢。。怎么能合。。合起来 https://abc.com 不就无限 301 到自身了吗。。


@just1
1L 还来了一个 CNAME 也是醉。、。、
shyling
2016-02-07 17:54:37 +08:00
@aprikyblue hsts 仅仅在 https 连接时有效。我的意思是收到 http 请求里的 hsts 头会被忽视
aprikyblue
2016-02-07 19:37:19 +08:00
@shyling 目前咱 http 和 https 都返回了 hsts 头,查了下的确是要在 https 里返回 ORZ 。。
TaMud
2016-02-09 07:26:56 +08:00
nginx( https) -> pass -> nginx( http)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255730

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX