请教一个 nginx 的问题, http 无法跳转到 https

2021-07-06 14:52:54 +08:00
 vueli

首先原谅我打马赛克, 这个是公司的, 不敢露出去.

现在的情况是 http 和 https 都能访问到网站. http 跳转不到 https.

而且我给他 301 跳转到 baidu.com 也没反应. 太神奇了.

nginx 重启过, nginx -t 也 ok. 就差服务器重启了, 但是重启怕出现一些别的问题.尽量避免重启.

我自己的个人网站这样写法都是没问题的, 我就很难受, 找不到原因了!!

921 次点击
所在节点    问与答
7 条回复
AoEiuV020
2021-07-06 15:01:38 +08:00
/etc/nginx/sites-enabled
检查是不是有其他配置重复了覆盖了这里的配置,
misaka19000
2021-07-06 15:02:24 +08:00
nginx 不是可以直接 redirect 的吗,搞这么复杂干嘛🤧
littleylv
2021-07-06 15:03:35 +08:00
rewrite 那一行换成

return 301 https://m.example.com$request_uri;

试试
eason1874
2021-07-06 15:09:28 +08:00
可以确定 http 访问到的不是第一个 server

看看其他配置文件,可能是其他 80 server 的也绑定了这个域名,匹配到那个了。如果确定没有,就是没有重启成功,还在用旧的 worker 处理请求,试试 force-reload

另外,域名 http 转 https 一般这样写 return 301 https://$host$request_uri;
vueli
2021-07-06 15:12:35 +08:00
@eason1874
@littleylv
@misaka19000
@AoEiuV020

才知道, 我老大买了一个阿里的 全站加速. 需要在阿里控制台修改

https://imgur.com/EULaISJ
vueli
2021-07-06 15:14:24 +08:00
[img][/img]。 各位不好意思, 才知道. 我老大用了全站加速. 需要在控制台修改
ysc3839
2021-07-06 17:25:25 +08:00
顺便提一下,在 nginx 中,对于“匹配任意网址,然后进行某些操作”这种需求,基本上是不需要使用 rewrite 的。
虽然 rewrite 能实现这类需求,但是 nginx 专门提供了性能更好指令,比如 try_files 。

就算一定要用 rewrite,截图中的也可以改成 rewrite ^ http://example.com$request_uri? permanent;
因为 ^ 是匹配文本开头,任何文本都有个开头,所以能实现“匹配任意文本”的功能。然后 rewrite 本身匹配的就是 $request_uri,那直接用就行了。
Nginx 博客有一篇文章专门提到了这个问题 https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites

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

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

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

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

© 2021 V2EX