Назад | Перейти на главную страницу

Nginx proxy_pass обратное проксирование за корпоративным брандмауэром

Кто-нибудь знает, как настроить 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, похоже, работает нормально.