Nginx
對 GET 變數中指定的 url 的 Nginx 代理請求
我需要 Nginx 來響應類似的請求
https://example.org/proxy/?url=https://othersite.com/path/file.php%%a=test123%%b=321tset
或類似的方法,例如
https://example.org/proxy/https://othersite.com/path/file.php?a=test123&b=321tset
通過將請求代理到
https://othersite.com/path/file.php?a=test123&b=321tset
有沒有辦法通過重寫或不同的規則來做到這一點?任何幫助,將不勝感激。先感謝您。
歡迎來到 SE。這些重定向可以使用
if
語句來完成,我沒有使用 nginx 代理嘗試過。將以下
if
塊添加到您的 Nginxserver
塊中以根據需要重定向它們server { ... ... #For https://example.org/proxy/?url=https://othersite.com/path/file.php%%a=test123%%b=321tset if ($request_uri ~ ^/proxy/\?url=(.*)$) { return 301 $1; } #For https://example.org/proxy/https://othersite.com/path/file.php?a=test123&b=321tset if ($request_uri ~ ^/proxy/(https\:\/\/(.*))$) { return 301 $1; } }
更新:
您可以使用
location
塊而不是使用代理來使用代理if
location ~ /proxy/\?url=(.*)$ { proxy_pass $1; proxy_set_header Host $host; } location ~ /proxy/https\:\/\/(.*)$ { proxy_pass $1; proxy_set_header Host $host; }