Nginx:正确设置proxy_path。网址问题

时间:2011-06-11 18:43:05

标签: apache nginx proxypass

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

1 个答案:

答案 0 :(得分:2)

您应该使用proxy_redirect指令。

location /wiki/ {
    proxy_pass http://192.168.122.3/;
    proxy_redirect default;
}