Q : Nginx 是什么样的规则,把只有 HTTPS 访问的网站的非 http 请求导入到同 ip 下面的不同域名前缀的网站呢? 如果你的 A 站改为 HTTPS 了,那么正常情况他的端口就变成了 443 ssl ,这时候你访问 HTTP 的 A 站,相当于访问 80 端口,但是 80 端口中已经没有 A 的 server name 了, nginx 会根据首字母排序默认访问第一个站,你服务器上就 A 、 B 两站,所以就会访问 B 站了。如果我建议你把 A 站的 80 做一个 rewrite 跳转,类似 rewrite ^(.*)$ https://$host$1 permanent;
@msg7086 手滑,应该是 502 bad gateway 的错误才对吧? 403 是没有权限才对 5xx 是 server 内部错误
awanabe
2017-03-20 15:44:49 +08:00
@msg7086 那我的理解, 就是当 listen80 只有一个的时候其实就是 default server 了。。这个有点坑, 很容易就踩进去了。 本来以为 server name 就是用来去强制隔离的
msg7086
2017-03-20 15:46:51 +08:00
@awanabe 502 只有在 proxy_pass 的对象无法访问的时候才会出现。 你这种情况要炸也只会炸 500 。 这里 Nginx 找不到匹配的 server_name ,也没有 default 的情况下,默认是漏给第一个 server 块(也即意味着第一个块是 catch-all 块)。你网站上只有 A 和 B ,没了 A ,这个端口上只剩 B ,当然就漏去 B 了。