
1 chairuosen Dec 25, 2021 出口和入口不一样很正常 ,186.16.15.12 只是公网进来的流量,走域名->nginx ,是由外向内的流量。你业务请求公众号是由内到外是不走这条路的,除非反过来是公众号请求你的域名。你要搜索的是如何指定网卡 IP 发请求(如果 221 是绑在你内网机器的,我猜不是),或者问运维内网机器出口网关是哪怎么指定 |
2 jbue520 OP Nginx 这台服务器是 windows 的,有没有什么方法让出口 IP 访问请求固定为 186.16.15.12 这个呢?? |
3 sujin190 Dec 25, 2021 @jbue520 #2 调路由优先级啊,网络基础了吧,如果在本机的话也可以打开 socket 的 bind 到对应网卡上去 如果云主机买的公网 ip 这种的话,以上两种方式就不行了,但是云主机后台都有设为出口 ip 这样的功能吧,你可以找找看 话说把所有 ip 都加到白名单里就是了,干嘛这么纠结? |
4 gtchan13579 Dec 26, 2021 via iPhone 可以设置 acl 或者添加静态路由表,具体要看你路由表。 |
6 jbue520 OP @gtchan13579 现在就是服务器是托管出去,只能改路由表么? |
7 ik Dec 26, 2021 via iPhone 没太看懂你的描述,nginx 是不是有配置这两条呢? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; |
8 Kinnice Dec 26, 2021 via Android route -n 把第一行删了 |
10 ch2 Dec 26, 2021 改一下路由表记录的优先级 到 0.0.0.0/32 的全部路由表记录中,221.221.221.221 的 metric 优先级比 186.16.15.12 的更高 所以对外发请求的时候会通过 221.221.221.221 发出去 |
11 Xusually Dec 26, 2021 via iPhone defaut gw 的问题 改路由表就行 你需要的出口优先级调高就可以了 |
12 akira Dec 26, 2021 如果是阿里云的 vpc 的话,应该是 dnet 和 snet 的配置问题,出口 ip 配一下就好 |
13 msg7086 Dec 26, 2021 |
14 AlexEzio Dec 27, 2021 这个问题和 nginx 没有关系, 原因在于出口多线路时,网关路由策略的选择导致了不同路线出口。 内网客户端无法决定网关路由策略,因此最佳方案是通过网关层策略修改来达到预期的效果。 解决方法: # 网关层 1. 固定外网 IP ,建议把所有 IP 加入微信白名单,因为多线路场景,对应的是多运营商与负载均衡,不同运营商的流量走不同的路线,以获取最佳速度 2. 如果 IP 过多,想指定某一条路线走特定流量,可以通过路由层,加上策略路由,通过七层策略,匹配所有*.weixin.com 的 http host 头流量走特定 IP 出口。 # 客户端层 3. 如果路由层不支持七层策略,可以咨询运维人员,获取具体的四层策略,比如联通 IP 走哪个,电信 IP 走哪个。 然后手动修改服务器 host ,将微信服务器指向特定的运营商 IP , 来保持请求总是走到对应的外网路线上 4. 如果外网是动态 IP ,客户端需要编写脚本,定期获取自己的外网地址,然后通过微信的 api,进行白名单刷新。 这也是常用手段之一 |
15 yadgen Jan 4, 2022 整一个网关。 |