Nginx
Nginx:proxy_pass 從位置動態
我希望你能幫助我解決一個小但棘手的 nginx 問題:
我想像這樣配置一個動態位置塊:
location /test1/* { proxy_pass destination.com/api/*; proxy_buffering off; }
如果 URL 是
.../test1/folder1
請求應該被傳遞給destination.com/api/folder1
我已經用變數試過了
$request_uri
proxy_pass destination.com/api/$request_uri;
——它對我不起作用。編輯:站點“/test1/”本身不應該被重定向 - 只有“/test1/”之後的部分。這怎麼可能?
更新 11.02.2016:仍然沒有解決方案:(
感謝您的幫助/回答!
你不需要
*
在location
. 而且你必須有協議proxy_pass
。這應該有效:location /test1/ { proxy_pass http://destination.com/api/; proxy_buffering off; }
您可以在將其傳遞給伺服器之前重寫 URI,如下所示:
location /test1/ { proxy_set_header Host destination.com; proxy_redirect http://destination.com/api/ http://$http_host/test1/; rewrite ^/test1/(.*)$ /api/$1 break; proxy_pass destination.com; }
希望這有幫助。
**更新:**添加 proxy_set_header 以將主機更改為正確的域名。如果需要,還可以添加 proxy_redirect 以更正響應標頭中的位置。