技术解析

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

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服