nginx通过web代理反向代理到上游

nginx通过web代理反向代理到上游,nginx,proxy,reverse-proxy,http-proxy,Nginx,Proxy,Reverse Proxy,Http Proxy,我有一个三条腿的NGINX反向代理设置,带有外部、内部和DMZ网络 NGINX有一个反向代理服务器,配置为侦听DMZ中的端口80。我需要通过上游HTTP代理将请求转发到另一台服务器,无法直接检索请求 如果我将WEB代理的IP地址放在上游部分,它会向HTTP代理发送“POST/DataService.svc HTTP/1.0”,这显然不起作用 是否可以重写$uri以在请求中包含主机名,使其看起来像“POST HTTP/1.0” 如果不安装squid等,这是否可行?如何实现这一点?为什么第一个示例显

我有一个三条腿的NGINX反向代理设置,带有外部、内部和DMZ网络

NGINX有一个反向代理服务器,配置为侦听DMZ中的端口80。我需要通过上游HTTP代理将请求转发到另一台服务器,无法直接检索请求

如果我将WEB代理的IP地址放在上游部分,它会向HTTP代理发送“POST/DataService.svc HTTP/1.0”,这显然不起作用

是否可以重写$uri以在请求中包含主机名,使其看起来像“POST HTTP/1.0”


如果不安装squid等,这是否可行?如何实现这一点?

为什么第一个示例显然不起作用?肯定不起作用的是
POSThttp://server.com/DataService.svc HTTP/1.0
当您将数据发布到名为
http://server.com/DataServices.svc
-客户端通过HTTP主机头告诉Web服务器它需要的虚拟主机,不在GET或POST请求中。上游服务器是HTTP代理
当客户端使用代理时,它通常将所有请求发送到该代理,而不是URL中的服务器。对代理的请求在一个方面不同于普通请求:在第一行中,它们使用被请求资源的完整URL,而不仅仅是路径。例如,获取http://www.somehost.com/path/file.html HTTP/1.0通过这种方式,代理知道将请求转发到哪个服务器(尽管代理本身可能使用另一个代理)。
最终安装了绑定到127.0.0.1的tinyproxy(透明模式,配置了上游代理服务器),从而解决了问题。看起来仅仅使用NGINX是不可能实现这个结果的。