2011-06-11 37 views
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)的行爲相同。Nginx:正確設置proxy_path。網址問題

有什麼辦法可以解決這個問題嗎?有沒有適當的方法來將/ 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/; 
    } 
} 

回答

2

你應該使用proxy_redirect指令。

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

謝謝你的回答! 對我來說,解決方案是在proxied apache下的sub-url下運行mediawiki。 nginx位置: 'location/wiki/{ proxy_pass http://192.168.122.3/; }' 並且具有'DocumentRoot =「/ var/www」'和wiki的apache配置可在/ var/www/wiki / – Axell 2011-07-02 19:23:53