Я использую nginx для обслуживания статических файлов и прокси других запросов к некоторому экземпляру Tomcat. Проблема в том, что я не знаю, как выбрать, какой IP-адрес будет использовать nginx для подключения к Tomcat.
Каждый экземпляр Tomcat принимает HTTP-соединения только с определенных IP-адресов. Мой сервер имеет все эти 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.
Кто-нибудь знает, как это сделать?
источник
если nginx не может этого сделать, вы всегда можете использовать netfilter и SNAT, чтобы он выглядел так, как если бы nginx использовал определенный ip:
источник
Просматривая вики nginx и особенно часть о ProxyModule , я не нашел ничего связанного.
Если у вас есть возможность немного поэкспериментировать, я бы посоветовал вам попробовать другие значения в
listen
директиве и проверить журналы доступа на вашем внутреннем сервере, чтобы увидеть, с какого IP-адреса приходит nginx.источник