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