Apache-2.2
使用 nginx 的部分反向 http 代理
我有幾個 HTTP 服務在同一台機器上執行,在不同的埠上。我想使用 nginx 作為反向代理,但我的設置似乎不太正確。
我想要以下內容:
/fossil/
==>http://127.0.0.1:8080/fossil/index.php
/fossil/(whatever)
==>http://127.0.0.1:8080/(whatever)
/webmin/
==>http://127.0.0.1:10000/
- 由 nginx 本身提供的一些更具體的位置
- 以及由 Apache 處理的所有其他內容 ==>
http://127.0.0.1:8001
前兩個似乎造成了麻煩。我希望下面
/fossil/
的所有東西都由化石處理,在 8080 埠;除了根本身,它必須由一個特殊的 PHP 頁面(在 Apache 下)處理。去這裡的方法是什麼?
試試下面的配置。
請務必查看該
location = /fossil/
部分中的評論。還要記住,對 /fossil/(whatever) 的請求會變成 /(whatever),因此內容中返回的任何 url 都應該是 /fossil/(whatever) 而不是 /(whatever)。如有必要,您可以在 nginx 端使用 sub_filter 在內容返回到客戶端時用 /fossil/(whatever) 替換 /(whatever)。location = /fossil/ { # matches /fossil/ query only # # if Apache isn't configured to serve index.php as the index # for /fossil/ uncomment the below rewrite and remove or comment # the proxy_pass # # rewrite /fossil/ /fossil/index.php; proxy_pass http://127.0.0.1:8080; } location = /fossil/index.php { # matches /fossil/index.php query only proxy_pass http://127.0.0.1:8080; } location /fossil/ { # matches any query beginning with /fossil/ proxy_pass http://127.0.0.1:8080/; } location /webmin/ { # matches any query beginning with /webmin/ proxy_pass http://127.0.0.1:10000/; } location / { # matches any query, since all queries begin with /, but regular # expressions and any longer conventional blocks will be # matched first. proxy_pass http://127.0.0.1:8001; } # locations to be handled by nginx go below