Рейтинг:0

Nginx robot proxy_pass на другой порт с изменением URL-адреса

флаг cn

У меня проблема с настройкой nginx. Если пользовательский агент "робот" - тогда прокси переходит на другой порт с установкой правильного uri в качестве аргумента

например: есть две службы: порт localhost:5000 и localhost:6000. все не роботы переходят на 5000, а роботы переходят на 6000 с URL-адресом, например:

обычный https://test.page/test/test -> http://localhost:5000/test/test
робот https://test.page/test/test -> http://localhost:6000/Page/Get?url=https://test.page/test/test

я пробую так:

если ($http_user_agent ~ 'робот') {
                установить $request_uri "/Page/Get?url=https://test.page$request_uri";
                proxy_pass http://localhost:6000;
            }
            если ($http_user_agent!~ 'робот') {
                proxy_pass http://localhost:5000;
            }

но для робота получил 404

djdomi avatar
флаг za
какого робота вы хотите заблокировать? Я бы перенаправил /robots.txt на такие запросы
флаг cn
мне нужно перенаправить роботов на другой порт и URL, но не блокировать его
Рейтинг:0
флаг us

карта это лучший способ выполнить такие условные вещи. Добавьте следующее в http уровень в конфиге nginx:

карта $http_user_agent $upstream {
    ~робот "localhost:6000/Page/Get?url=https://test.page$request_uri";
    локальный хост по умолчанию: 5000 $ request_uri;
}

А затем используйте $ вверх по течению как цель:

proxy_pass http://$upstream;
флаг cn
Спасибо за ответ, но ошибка 502 =(

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.