我有几台服务器在虚拟机中运行。我有一个正在运行的 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)这样的 VM 中运行的其他项目也是如此。
有没有办法解决这个问题?是否有适当的方法将 /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/;
}
}