Nginx(openresty)反向代理到Apacheredirect问题

我已经设置了一个反向代理,从nginx(openresty)向apache发送请求,使用这个只是为了通过openresty来检查请求,而本质上是服务器在apache上运行。

问题是apache是​​在端口8080和nginx在80,所以每当Apache做一个redirect它redirect到端口8080,我还没有find任何确凿的方法来防止这个,而是有它到端口80。

我的nginx服务器configuration如下

server { listen 80 default_server; server_name localhost; client_max_body_size 1024m; client_body_timeout 300s; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 

没有卢加虽然。

至于Apache:

 <VirtualHost *:8080> UseCanonicalName Off ServerName domain.com ServerAdmin [email protected] DocumentRoot /home/user1/environments/production </VirtualHost> <VirtualHost *:8080> ServerAlias *.*.domain.com VirtualDocumentRoot /home/%2/environments/%1 </VirtualHost> <VirtualHost *:8080> ServerAlias *.domain.com VirtualDocumentRoot /home/%1/environments/production </VirtualHost> 

这工作,但如果Apache做任何forms的redirect它redirect通过端口8080.我有效地想要closures端口8080通过任何其他的nginx访问,但通过nginx Apache应该运行,就像它也是在端口80。

不pipe在nginx中使用代理还是不使用,都会重新定向。

这告诉我必须有某种caching干扰,但我一直禁用浏览器caching。

所以我不完全确定它是什么修复的,但我更新的是我的位置块,如下所示:

 location / { proxy_redirect off; port_in_redirect off; proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 16k; proxy_buffers 32 8k; proxy_busy_buffers_size 64k; } 

这是经过大约6-8小时淘谷歌和尝试不同的事情。 试图清除它,只是从nginx输出你好,我看到它仍然是redirect。

尝试一个隐身窗口设法停止redirect,所以如果你尝试这个解决scheme,不要依靠禁用caching,因为它似乎只有隐身停止它cachingredirect在这种情况下(至less在铬61)。 此外,服务器configuration的其他更新生效,而不是redirect。

我在想

 proxy_redirect off; port_in_redirect off; proxy_set_header X-Forwarded-Host $http_host; 

最有可能解决了最初的问题。