
Мне нужно, чтобы 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 proxy.
Добавьте следующие if
блоки в блок Nginx server
, чтобы перенаправить их по мере необходимости
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;
}