
Preciso que o Nginx responda a uma solicitação como
https://example.org/proxy/?url=https://othersite.com/path/file.php%%a=test123%%b=321tset
ou um método semelhante, como
https://example.org/proxy/https://othersite.com/path/file.php?a=test123&b=321tset
fazendo proxy da solicitação para
https://othersite.com/path/file.php?a=test123&b=321tset
Existe uma maneira de fazer isso reescrevendo ou uma regra diferente? Qualquer ajuda seria apreciada. Agradeço antecipadamente.
Responder1
Bem-vindo ao SE. Esses redirecionamentos podem ser feitos usando if
instruções e não tentei usando o proxy nginx.
Adicione os seguintes if
blocos ao seu server
bloco Nginx para redirecioná-los conforme necessário
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;
}
}
Atualizar:
Você pode usar proxy usando location
blocos em vez de usarif
location ~ /proxy/\?url=(.*)$ {
proxy_pass $1;
proxy_set_header Host $host;
}
location ~ /proxy/https\:\/\/(.*)$ {
proxy_pass $1;
proxy_set_header Host $host;
}