首先原谅我打马赛克, 这个是公司的, 不敢露出去.
现在的情况是 http 和 https 都能访问到网站. http 跳转不到 https.
而且我给他 301 跳转到 baidu.com 也没反应. 太神奇了.
nginx 重启过, nginx -t 也 ok. 就差服务器重启了, 但是重启怕出现一些别的问题.尽量避免重启.
我自己的个人网站这样写法都是没问题的, 我就很难受, 找不到原因了!!
1
AoEiuV020 2021-07-06 15:01:38 +08:00 1
/etc/nginx/sites-enabled
检查是不是有其他配置重复了覆盖了这里的配置, |
2
misaka19000 2021-07-06 15:02:24 +08:00 1
nginx 不是可以直接 redirect 的吗,搞这么复杂干嘛🤧
|
3
littleylv 2021-07-06 15:03:35 +08:00 2
|
4
eason1874 2021-07-06 15:09:28 +08:00 2
可以确定 http 访问到的不是第一个 server
看看其他配置文件,可能是其他 80 server 的也绑定了这个域名,匹配到那个了。如果确定没有,就是没有重启成功,还在用旧的 worker 处理请求,试试 force-reload 另外,域名 http 转 https 一般这样写 return 301 https://$host$request_uri; |
5
vueli OP @eason1874
@littleylv @misaka19000 @AoEiuV020 才知道, 我老大买了一个阿里的 全站加速. 需要在阿里控制台修改 https://imgur.com/EULaISJ |
6
vueli OP |
7
ysc3839 2021-07-06 17:25:25 +08:00 via Android 3
顺便提一下,在 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 |