перенаправление на другой локальный хост на основе URL-адреса nginx

Я использую докер для создания нескольких контейнеров и пытаюсь перенаправить вызовы, поступающие на мой веб-сайт, в соответствующий контейнер. например, если кто-то попытается перейти на http://wavenapp.com/bot/test1/webhook , то его запрос будет перенаправлен на http: // test1: 1337 / webhook

Я попробовал следующий код

server {
    listen 80;

    server_name wavenapp.com;

   location ~ ^/bot/(.*) {
             proxy_pass http://$1:1337;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $host;
             proxy_cache_bypass $http_upgrade;
       }
}

, но он не работает, я не очень хорошо разбираюсь в nginx и буду признателен за любую помощь, которую я могу получить. Спасибо.

0
задан 17 April 2019 в 22:38
1 ответ

То, что вы пытаетесь сделать, очень опасно. Разрешение пользователю указать сервер назначения proxy_pass - это открытая брешь в безопасности, ожидающая злоупотребления. Например, кто-то может запросить http://wavenapp.com/bot/www.facebook.com , и ваш сервер с радостью проксирует главную страницу Facebook вашему клиенту.

Я рекомендую вам настроить блок местоположения для всех ваших целей proxy_pass и жестко закодируйте целевой сервер proxy_pass .

location ~ ^/bot/test1/(.*) {
    proxy_pass http://test1:1337;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxuy_cache_bypass $http_upgrade;
}
0
ответ дан 5 December 2019 в 03:26

Теги

Похожие вопросы