有人知道如何在公司防火墙后面设置 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 似乎工作正常。