Nginx

Nginx:proxy_pass 從位置動態

  • February 17, 2016

我希望你能幫助我解決一個小但棘手的 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 以更正響應標頭中的位置。

引用自:https://serverfault.com/questions/752397