Solicitud de proxy Nginx a la URL especificada en la variable GET

Solicitud de proxy Nginx a la URL especificada en la variable GET

Necesito que Nginx responda a una solicitud como

https://example.org/proxy/?url=https://othersite.com/path/file.php%%a=test123%%b=321tset

o un método similar, como

https://example.org/proxy/https://othersite.com/path/file.php?a=test123&b=321tset

enviando la solicitud a

https://othersite.com/path/file.php?a=test123&b=321tset

¿Hay alguna manera de hacer esto reescribiendo o con una regla diferente? Cualquier ayuda sería apreciada. Gracias de antemano.

Respuesta1

Bienvenido a SE. Esas redirecciones se pueden realizar mediante ifdeclaraciones y no lo he probado utilizando el proxy nginx.

Agregue los siguientes ifbloques a su bloque Nginx serverpara redirigirlos según sea necesario

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;
    }
}

Actualizar:

Puedes usar proxy usando locationbloques en lugar de usarif

location ~ /proxy/\?url=(.*)$ {
    proxy_pass $1;
    proxy_set_header Host $host;
}

location ~ /proxy/https\:\/\/(.*)$ {
    proxy_pass $1;
    proxy_set_header Host $host;
}

información relacionada