关于php:Nginx proxy_pass在公司防火墙后面进行反向代理

关于php: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;
    }
  }
}

这种方法最初让我很兴奋,但它实际上只是做了重定向,并没有正确代理,最终失败了。我是不是错过了什么?

编辑: 感谢下面的评论者发现了我的错误,我在 Host 标头变量中有一个协议 - 删除它解决了问题 - 方法#1 似乎工作正常。

相关内容