nginx 作为使用特定源 ip 的代理

msb*_*gli 9 nginx proxy ip ip-address

我正在使用 nginx 来提供静态文件并将其他请求代理到某个 Tomcat 实例。问题是我不知道如何选择 nginx 使用哪个 IP 地址连接到 Tomcat。

每个 Tomcat 实例只接受来自特定 IP 地址的 HTTP 连接。我的服务器拥有所有这些 IP。我只是无法选择 nginx 使用哪一个。

这是我的配置文件:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

location /integracao/ {
    proxy_pass http://X.X.X.X:9080/integracao/;
}

location /solr/ {
    proxy_pass http://Y.Y.Y.Y:8080/solr/;
}
Run Code Online (Sandbox Code Playgroud)

我的服务器有一个接口,有两个 IP 地址:A 和 B。我需要使用 IP A 连接到第一个 Tomcat,使用 IP B 连接到 Solr。

有谁知道怎么做?

Nop*_*ius 10

proxy_bind 指令允许您选择不同的源 IP 地址。

http://wiki.nginx.org/HttpProxyModule#proxy_bind

所以你的配置看起来像:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

location /integracao/ {
    proxy_bind A.A.A.A;
    proxy_pass http://X.X.X.X:9080/integracao/;
}

location /solr/ {
    proxy_bind B.B.B.B;
    proxy_pass http://Y.Y.Y.Y:8080/solr/;
}
Run Code Online (Sandbox Code Playgroud)