我在服务器A上有一个正在运行的nginx示例,它将请求传递给服务器B上的Apache Web服务器。
我已经测试了几个(!)设置.但仍然存在以下问题:
像https://example.com/myapp
这样的请求被 * 转换 * 为http://example.com/
并 * 传递 * 到服务器B。服务器B向nginx/服务器A发送http://example.com/login
响应。但是nginx不会将该响应转换为https://example.com/myapp/login
:如果我使用wget https://example.com/myapp
,则接收到的是https://example.com/login
(缺少/myapp
部分)。
这是我当前的配置:
server {
listen 443 ssl;
server_name example.com;
location /myapp/ {
proxy_pass http://192.168.0.100/;
}
}
字符串
我读了很多线程,并发挥了许多参数,如proxy_redirect
,rewrite
和return
。但这并不适合我.
1条答案
按热度按时间esyap4oy1#
您可能需要重新配置服务器B,而不是重新配置Nginx。当服务器B发出重定向时,它需要包含目录。您可以将头传递给后端,让它知道它位于反向代理后面,然后在检测到这些头时更改后端以进行不同的重定向:
字符串
据我所知,Nginx没有相当于Apache的
proxypass_reverse
指令,该指令从后端服务器munges重定向头。因此另一种解决方案是从Nginx切换到Apache的前端,它具有更改重定向的功能。