我有几台服务器在虚拟机中运行。我有一个运行nginx来代理对这些服务器的请求。例如,http://mydomain.com/wiki应该将请求代理到http://192.168.122.3。 192.168.122.3使用DocumentRoot = / var / www / wiki运行apache。一切正常,但是当页面加载时,所有路径都指向/而不是/ wiki(如<img src="/bla-bla-bla"/>, not /wiki/bla-bla-bla"
)。它似乎适用于apache,但不适用于浏览器 - 它无法加载图像等。
将Apache中的DocumentRoot更改为/ var / www并从nginx传递/ wiki没有帮助 - mediawiki开始重定向到/ wiki,nginx将其重定向回apache等等,然后再说明循环重定向。
在Redmine(ruby on rails)等虚拟机中运行的其他项目的行为相同。
有什么方法可以解决这个问题吗?有没有正确的方法将/ subdir等URL代理到其他服务器?
这是nginx服务器部分:
server {
listen 192.168.122.7:80;
server_name mydomain.com;
access_log /var/log/nginx/localhost.access.log;
location / {
}
location /wiki/ {
proxy_pass http://192.168.122.3/;
}
}
答案 0 :(得分:2)
您应该使用proxy_redirect指令。
location /wiki/ {
proxy_pass http://192.168.122.3/;
proxy_redirect default;
}