Solicitação de proxy Nginx para URL especificado na variável GET

Solicitação de proxy Nginx para URL especificado na variável GET

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 ifinstruções e não tentei usando o proxy nginx.

Adicione os seguintes ifblocos ao seu serverbloco 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 locationblocos 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;
}

informação relacionada