Django и nginx подключены через мостовую сеть.Как разобрать домен и передать его в proxy_pass?

Я работаю над приложением с несколькими арендаторами. У меня есть nginx в качестве rev-proxy. Когда арендатор регистрируется, я создаю образ docker и называю его в соответствии с его субдоменом. Назовем tenant1 t1 и tenant2 t2.

Так что t1.localhost.web to должен быть направлен на t1.web:8000, где t1 извлекается из url в nginx с помощью regex и конкатенируется в ".web:8000" и становится t1.web:8000 и устанавливается в proxy_pass в nginx.conf

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

curl http://t1.web:8000 действительно работает, если вы "bash "ed в контейнер nginx

это мой файл конфигурации

events {
    worker_connections  4096;  ## Default: 1024
}
http {

  

  # Redirect HTTP to HTTPS
  server {
    server_name             ~^(?<subdomain>.+)\.app\.dev;
    listen                  80;
    

   
    location / {
      set $domainweb        "http://$subdomain.web:8000";
      proxy_pass            $domainweb;
      proxy_set_header      Host $host;
      proxy_set_header      X-Real-IP $remote_addr;
      
    }
    

  }
}

для отладки я попытался исключить переменную субдомена и попробовал

location / {
      set $domainweb "http://t1.web:8000";
      
      proxy_pass            $domainweb;
      proxy_set_header      Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      
    }

это тоже не сработало, но когда я делаю

 location / {
          
          
          proxy_pass            http://t1.web:8000;
          proxy_set_header      Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          
        }

Это сработало, значит, есть проблема с proxy_pass и регулярными выражениями, которую я не могу понять.

Любая помощь будет оценена по достоинству. Спасибо

Я нашел ответ

Вы должны заставить смотреть внутренний dns-сервер

Docker Network Nginx Resolver

в основном добавляя

resolver 127.0.0.11 ipv6=off;

under в скобке http решил мою проблему

Вернуться на верх