2

我有几台服务器在虚拟机中运行。我有一个正在运行的 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/;
    }
}
4

1 回答 1

2

您应该使用proxy_redirect指令。

location /wiki/ {
    proxy_pass http://192.168.122.3/;
    proxy_redirect default;
}
于 2011-06-12T18:53:21.113 回答