我需要 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
有没有办法通过重写或其他规则来实现这一点?如能得到任何帮助,我将不胜感激。提前谢谢您。
答案1
欢迎来到 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;
}