【无标题】nginx 502 解决 No connection could be made because the target machine actively refused it
作者:mmseoamin日期:2024-01-25

win11 已经搭建好的环境突然全部nginx502,127.0.01拒绝访问


nginx日志如下 无法连接fastcgi9000端口

connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream, client: 127.0.0.1, server:

出现这种情况时,打开cmd,在cmd中 ping 127.0.0.1 会出现下图情况。

【无标题】nginx 502 解决 No connection could be made because the target machine actively refused it,cmd,第1张

ping 解析出来的是IPV6的::1,原因是windows有个优先解析列表,当ipv6的优先级高于ipv4时,就会出现这种情况。

解决办法:修改优先解析表让ipv4优先级高于ipv6的记录。方法如下:

  1. win+x---->Windows PowerShell(管理员)(A)

    【无标题】nginx 502 解决 No connection could be made because the target machine actively refused it,shell,第2张

  2. 输入命令 netsh interface ipv6 show prefixpolicies,查询ipv6优先级

    【无标题】nginx 502 解决 No connection could be made because the target machine actively refused it,优先级,第3张

    这是是正常的优先级

  3. 依次逐行复制下面命令执行,调整顺序

    • netsh int ipv6 set prefix ::/96 50 0
    • netsh int ipv6 set prefix ::ffff:0:0/96 40 1
    • netsh int ipv6 set prefix 2001::/32 30 3
    • netsh int ipv6 set prefix ::1/128 10 4
    • netsh int ipv6 set prefix ::/0 5 5
    • 调整后执行 netsh interface ipv6 show prefixpolicies 检查一下

    • 重启电脑

之前用得好好的,突然就502了,我怀疑是win11更新导致的,

在Windows Vista中,以及在Windows 7,Windows 8和Windows 10中,Windows操作系统更喜欢IPv6协议,该协议优先于常用的标准IPv4协议。因此,对同一网络、VLAN 或子网甚至本地主机上的远程主机执行 ping 操作可能会返回 IPv6 样式的 IP 地址。

一些程序或应用程序可能无法使用 IPv6 地址,但无法强制使用 IPv4 地址,从而导致其正常运行出现问题和问题。

在这种情况下,可以更改 Internet 协议的 Windows 首选项,即通过增加 IPv4 相对于 IPv6 协议的优先级,以便 IPv4 始终优先于 IPv6。这样做不会禁用 IPv6,而是允许 IPv6 协议继续运行。