Nginx proxy_pass 在企业防火墙后面进行反向代理

Mar*_*k D 6 firewall nginx reverse-proxy

有谁知道如何在公司防火墙后面设置 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试重写并将 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这种方法最初让我很兴奋,但它实际上只是做了一个重定向,并没有正确代理,最终失败了。我在这里缺少什么吗?

编辑: 感谢下面的评论者发现了我的错误,我在 Host header var 中有协议 - 删除它解决了问题 - 方法 #1 似乎工作得很好。