Назад | Перейти на главную страницу

перенаправить на другой localhost на основе 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 и буду признателен за любую помощь, которую я могу получить. Спасибо.

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

Я рекомендую вам настроить location блок для всех ваших 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;
}