V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
flyingfishzxf
V2EX  ›  程序员

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

  •  
  •   flyingfishzxf · 2023-03-04 12:24:16 +08:00 via Android · 1684 次点击
    这是一个创建于 657 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里一台 PVE 虚拟机,开了一个虚拟机安装了 nginx 跑 vitepress 的静态网页,nginx 配置了虚拟主机 开了 80 端口,使用虚拟机 ip 在家里可以直接访问

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

    请大佬指教一下,搜了一上午没有搞清楚怎么回事
    第 1 条附言  ·  2023-03-05 12:41:14 +08:00
    @ feng0vx @ XIU2 @ zddwj @ ysc3839 @ blackeeper @ LGA1150
    谢谢大家的回复,我无意中看到 V 站上这个帖子: https://cn.v2ex.com/t/856712
    我的问题跟原帖的一模一样,原帖 OP 说是因为机器网关指到了软路由,被软路由的防火墙拦截了,我检查了一下发现我这台虚拟机网关也是指到了软路由,另一台跑 Docker 的网关是正常指到了拨号主路由的就没问题,修改网关,问题解决
    10 条回复    2023-03-05 12:39:05 +08:00
    feng0vx
        1
    feng0vx  
       2023-03-04 13:25:21 +08:00 via iPhone
    运营商搞的吧,web 服务一般不允许了
    XIU2
        2
    XIU2  
       2023-03-04 14:24:39 +08:00
    运营商一般都会限制家宽的 80 443 端口,这好像都算常识了吧。。。

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

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

    和 DNS 污染(劫持)原理是一样的,只不过一个是针对 DNS 一个是针对 HTTP (或者说域名)。
    flyingfishzxf
        3
    flyingfishzxf  
    OP
       2023-03-04 15:33:09 +08:00 via Android
    @XIU2 感谢回答,可能是我描述得不够清楚,我并不是用 80 443 对外提供访问的,80 是我虚拟机的端口,拨号路由器设置了 60000 以上的端口转发到这台虚拟机的 80 端口,我也试过其他端口,都不行。
    另一台虚拟机跑了几个 docker ,也一样做了端口转发,都可以成功访问到的,这才是让我觉得奇怪的原因😂
    zddwj
        4
    zddwj  
       2023-03-04 16:20:03 +08:00 via Android
    可能检测到你的流量 web 特征太过明显所以封了,可以试试加个 https
    ysc3839
        5
    ysc3839  
       2023-03-04 17:14:02 +08:00 via Android
    @flyingfishzxf 都不行说明是检测了传输内容呀
    blackeeper
        6
    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
        7
    LGA1150  
       2023-03-04 22:28:24 +08:00
    建议两边抓包看看,不排除 PMTU blackhole
    flyingfishzxf
        8
    flyingfishzxf  
    OP
       2023-03-05 08:15:51 +08:00 via Android
    @blackeeper 我试试把内外端口调成一样的试试看,不过我感觉应该不是这原因,vitepress 生成的是纯静态网页,是单页应用,也没有登录功能,路由是前端路由,重定向也是前端路由自己重定向,服务器只是 nginx ,连 node 都没
    flyingfishzxf
        9
    flyingfishzxf  
    OP
       2023-03-05 08:16:18 +08:00 via Android
    @LGA1150 谢谢,我会试试看
    flyingfishzxf
        10
    flyingfishzxf  
    OP
       2023-03-05 12:39:05 +08:00
    @feng0vx @XIU2 @zddwj @ysc3839 @blackeeper @LGA1150
    谢谢大家的回复,我无意中看到 V 站上这个帖子: https://cn.v2ex.com/t/856712
    我的问题跟原帖的一模一样,原帖 OP 说是因为机器网关指到了软路由,被软路由的防火墙拦截了,我检查了一下发现我这台虚拟机网关也是指到了软路由,另一台跑 Docker 的网关是正常指到了拨号主路由的就没问题,修改网关,问题解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:47 · PVG 18:47 · LAX 02:47 · JFK 05:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.