Nginx

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

  • July 7, 2013

我正在使用 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/;
}

我的伺服器有一個介面,有兩個 IP 地址:A 和 B。我需要使用 IP A 連接到第一個 Tomcat,使用 IP B 連接到 Solr。

有誰知道該怎麼做?

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/;
}

引用自:https://serverfault.com/questions/439631