1
tars13344 8 天前
这是浏览器的 HSTS 策略,没啥好办法 只能都配 https
|
![]() |
2
lpe234 8 天前
不应该啊 我一般是在 `conf.d` 目录下一个项目一个配置文件。 如: `xxx.xx.conf`
upstream home { server 127.0.0.1:28090; } server { listen 80; server_name xxx.xxx; rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https } server { listen 443 ssl http2; server_name xxx.xxx; index index.html; root /mnt/www/xxx.xxx; location / { proxy_pass http://home; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 并不会出现你说的这个问题 |
![]() |
3
totoro625 8 天前
"如果有些站点没有启用 https (使用了通配符证书)"
想看一下这个站点是怎么配置的,初步判断是这里出了问题 没有启用 https 就不要配置证书,没有配置证书就是一个正常的 http 站点 排除方式:使用一个全新的浏览器环境,直接访问 http 站点,看一下是否存在问题 |
![]() |
4
yulgang 8 天前
强制跳转到 https 是浏览器行为。
我猜测他是先尝试连 443 端口,你可以把服务器 443 端口临时关了试一试 ![]() 如果你的服务器可以联网的话,可以考虑使用比如 let's encrypt 这样的免费证书,acme.sh 可以自动签发 reload nginx 的 |
6
lneoi 8 天前
看意思是 https 是配全局了,每个站点分开来配应该就行了吧
另一种统一入口的话,nginx 内部代理一下可以将 https 代理到 http |
8
zhanlanhuizhang 8 天前
你 nginx 配置错误了吧,我的也是你这样的,没有问题呀。
|
![]() |
9
lslqtz 8 天前
ssl 建议有一个默认块来兜底全部请求 (包括非 https 网站的).
|
![]() |
10
jiangzm 8 天前
https 请求跳转到另一个 https 站点,100%是 nginx 配置问题, 这个看配置就知道问题在哪
你的 A 站只启用了 http 但是当前 ip 有 443 端口,你访问 A 域名的 https 肯定是能接收到请求的, 正确做法是所有的 https server_name 都指定具体域名不要写通配域名“*.xx.com”也不要兜底的"_"。 这样访问 A 站肯定没有 https 服务了。 |
11
Akasoent 8 天前
配置文件脱敏后发出来。
|
![]() |
12
Xheldon 8 天前
> 我发现问题是,当访问一个没配置 ssl 的域名时,比如:访问 https://a.test.com ,但是它没有配置 ssl ,那么就会跳转到配置了 ssl 的一个站点去。
Nginx 的匹配是顺序匹配的,80 端口没匹配到就跑下面的 443 规则了,如果没有就会返回最后一个兜底的链接而不管 server_name 是什么,你可以试试 |
![]() |
13
kenshin912 8 天前
我大概看懂了 OP 的意思 .
在一个配置了多个虚拟主机配置文件的 Nginx 中 , 当请求某个只配置了 HTTP 的站点时 , 由于浏览器默认访问 HTTPS , Nginx 返回了另一个 HTTPS 的站点 , 这样就存在一些安全问题 , 是吗 ? 我这里是这么做的 , 在 Nginx.conf 中修改默认配置 , 启用 ssl_reject_handshark . ```nginx ######################## default ############################ geo $public_ip { default 1; 127.0.0.0/8 0; 10.0.0.0/8 0; 172.16.0.0/16 0; } server { server_name _; #listen 80 default_server; listen 443 ssl default_server; ssl_reject_handshake on; if ($public_ip) { return 444; } error_page 400 494 495 496 497 =444 /; root /xxx/xxxx/default; index index.html; } ``` |
![]() |
14
coolair OP @kenshin912 #13 感谢,就是这个意思,哈哈,太棒了,解决了。
|
![]() |
15
kenshin912 7 天前
@coolair #14 很高兴能帮到你.
![]() |