nginx 200,但是网页无法访问 NET_CONNECTION_RESET

2023-03-04 12:24:16 +08:00
 flyingfishzxf
家里一台 PVE 虚拟机,开了一个虚拟机安装了 nginx 跑 vitepress 的静态网页,nginx 配置了虚拟主机 开了 80 端口,使用虚拟机 ip 在家里可以直接访问

有一个域名做了 DDNS 解析到家宽动态公网 ip ,路由器做了端口转发,用高位端口转发到虚拟机的 80 端口,使用域名 /家宽公网 ip + 高位端口都无法访问,提示“连接被重置”,看 nginx 的日志状态码是 200

请大佬指教一下,搜了一上午没有搞清楚怎么回事
1647 次点击
所在节点    程序员
10 条回复
feng0vx
2023-03-04 13:25:21 +08:00
运营商搞的吧,web 服务一般不允许了
XIU2
2023-03-04 14:24:39 +08:00
运营商一般都会限制家宽的 80 443 端口,这好像都算常识了吧。。。

你这种情况是正常的,你发送消息到网站,网站也收到并回复你了。
但在你发送消息后,旁路的设备监测到了并伪造了 RESET 响应返回给你,而因为旁路设备离你更近,因此会比目标网站的正常回应更快的返回给你,你的浏览器收到后就报错 NET_CONNECTION_RESET 了,并会忽略后续发来的正确响应(如果你收到了的话)。

当然,这种情况是你与服务器之间 IP 通顺的情况下,如果是 IP/端口 被封了,那么就是报错超时了。

和 DNS 污染(劫持)原理是一样的,只不过一个是针对 DNS 一个是针对 HTTP (或者说域名)。
flyingfishzxf
2023-03-04 15:33:09 +08:00
@XIU2 感谢回答,可能是我描述得不够清楚,我并不是用 80 443 对外提供访问的,80 是我虚拟机的端口,拨号路由器设置了 60000 以上的端口转发到这台虚拟机的 80 端口,我也试过其他端口,都不行。
另一台虚拟机跑了几个 docker ,也一样做了端口转发,都可以成功访问到的,这才是让我觉得奇怪的原因😂
zddwj
2023-03-04 16:20:03 +08:00
可能检测到你的流量 web 特征太过明显所以封了,可以试试加个 https
ysc3839
2023-03-04 17:14:02 +08:00
@flyingfishzxf 都不行说明是检测了传输内容呀
blackeeper
2023-03-04 22:00:50 +08:00
具体原因是:你映射的端口和你 nginx 的端口不一致导致的。
比如你的网站检测到未登录就重定向 /login.html 页面,那么你内网打开任意页面就会自动重定向到 192.168.1.1/login.html ,可以直接访问。但是你从互联网访问 www.example.com:6000/xx.html,那么他是重定向到 www.example.com/login.html ,没有带端口,这个时候运营商屏蔽了 80 端口,所以你连接被重置了
LGA1150
2023-03-04 22:28:24 +08:00
建议两边抓包看看,不排除 PMTU blackhole
flyingfishzxf
2023-03-05 08:15:51 +08:00
@blackeeper 我试试把内外端口调成一样的试试看,不过我感觉应该不是这原因,vitepress 生成的是纯静态网页,是单页应用,也没有登录功能,路由是前端路由,重定向也是前端路由自己重定向,服务器只是 nginx ,连 node 都没
flyingfishzxf
2023-03-05 08:16:18 +08:00
@LGA1150 谢谢,我会试试看
flyingfishzxf
2023-03-05 12:39:05 +08:00
@feng0vx @XIU2 @zddwj @ysc3839 @blackeeper @LGA1150
谢谢大家的回复,我无意中看到 V 站上这个帖子: https://cn.v2ex.com/t/856712
我的问题跟原帖的一模一样,原帖 OP 说是因为机器网关指到了软路由,被软路由的防火墙拦截了,我检查了一下发现我这台虚拟机网关也是指到了软路由,另一台跑 Docker 的网关是正常指到了拨号主路由的就没问题,修改网关,问题解决

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

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

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

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

© 2021 V2EX