我正在尝试设置一个 nginx 服务器,将传入的请求转发到公司代理(它是一个 mcafee 代理),并使用代理头主机和实际目标主机进行转发proxy_set_header Host xyz.com:443
。
这非常适合http请求但不https
这是我的 nginx.conf(假设不需要代理身份验证)
server {
listen 80;
location /test/ {
proxy_pass http://my-corporate-proxy:8080/;
proxy_set_header Host mytargetdomain.com:443;
}
这里我的期望是当我点击http://localhost:80/test/api/health
请求时应该转到 nginx 然后转到http://my-corporate-proxy:8080/api/health
Host 标头并从我的代理发起类似 https 请求https://mytargetdomain.com/api/health
。
但在 https 的情况下不会发生这种情况。
有什么方法可以让它工作吗?或者如果我让 nginx 尊重系统代理,那也应该没问题。
提前致谢。
答案1
这个设置应该可以,但是操作系统的代理设置必须允许 nginx 服务通过,例如如果是 Windows Nginx + Proxifier,在 Proxifier 菜单里的 [Profile][Advanced][Sevices and other users]...options 必须勾选,才能允许 nginx 服务通过。
http{
...
upstream service_behind_proxy {
server my-corporate-service-behind-proxy:8080;
}
server {
listen 80;
location /test/ {
proxy_pass http://service_behind_proxy;
proxy_set_header Host mytargetdomain.com:443;
}
}