Nginx 对于具有多个 IP 的服务器如何指定 proxy_pass 的 IP
- 0次
- 2021-05-26 18:27:11
- idczone
对于不同的域名用到了不同的 proxy_pass,但是出站使用的都是 eth1 的 IP,如何指定不同的域抗投诉服务器名的 proxy_pass 使用不同的出站 IP。
upstream
噫 如果是不同的目标域名就用iptables替换源IP
现在的情况是所有的 proxy_pass 向外请求的流量都走的 eth1 的 IP,如果用 iptables 会不会导致走 eth2(iptables 指定的出站 ip)而不是分别一个 ip。
你也可以每个 server 单独监听一个 ip
目前确实是 listen 不同的服务器 IP 的,但是依然 proxy_pass 走的是 eth1 的 IP。
指定出站IP应该是配置路由表吧。
多个server配server_name
看了一下 Nginx 路由表,跟需求不一样。
已经配置了,请重新理解我的需求。
upstream go {
server 127.0.0.1:8080;
server 192.168.1.1:8080;
}
server {
server_name go.com;
listen 80;
location / {
proxy_pass http://go;
proxy_set_header Host $host;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
类似以上?
这个应该解决你的问题了
http://www.cnblogs.com/mchina/archive/2012/05/21/2511824.html
这个文章是解决多IP服务器识别受访IP,楼主问的是从本机出口的IP。
其实这个问题和nginx无关,任意程序对外访问都走默认路由那一个IP。
所以楼主需要添加第二个路由表第二个路由表的默认路由走eth0,然后使用ip rule 添加策略路由,让访问特定IP 的规则走第二个路由表。
参考文献: http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html
Let me read the doc 4 u
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_bind
非常感谢,简单看了一下,该方案能解决我的需求。
这个更加便捷,非常感谢。
又学到新东西了, 感谢11, 12楼.
iptables to source