Запрос прокси-сервера Nginx на URL-адрес, указанный в переменной GET

Запрос прокси-сервера Nginx на URL-адрес, указанный в переменной GET

Мне нужно, чтобы 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;
}

Связанный контент