Кто-нибудь знает, как настроить nginx за корпоративным брандмауэром для обратного обращения прокси-запросов к серверам за пределами брандмауэра?
Причина, по которой я хочу это сделать, заключается в том, что я пытаюсь использовать приложение, которое не поддерживает стандартные настройки http_proxy, обманывая его, думая, что соответствующие ресурсы находятся внутри брандмауэра (т.е. обратное проксирование их с помощью nginx).
Я пробовал следующее:
Сначала попробовал proxy_pass и передал хост:
http {
upstream corporate_proxy {
server web-proxy.mycorp.com:8080;
}
server {
listen 80;
rewrite_log on;
location / {
proxy_buffering off;
proxy_pass_header on;
proxy_set_header Host "http://public-website.com";
proxy_pass http://corporate_proxy;
}
}
}
Второй попытался переписать и передать URL-адрес корпоративному брандмауэру:
http {
upstream corporate_proxy {
server web-proxy.corp.hpecorp.net:8080;
}
server {
listen 80;
rewrite_log on;
location / {
rewrite ^(.*)$ "http://public-website.com$1" break;
proxy_buffering off;
proxy_pass_header on;
proxy_pass http://corporate_proxy;
}
}
}
Этот подход меня сначала взволновал, однако на самом деле он просто выполняет перенаправление, а не проксирует должным образом, и в конечном итоге терпит неудачу. Что-то мне здесь не хватает?
Редактировать: Благодаря комментатору ниже, который заметил мою ошибку, у меня был протокол в заголовке хоста var - его удаление решило проблему - подход №1, похоже, работает нормально.