Для этой настройки я бы:
- удалил файлы
.htaccess
;и - Убедитесь, что бэкэнд-сервисы не публикуются с опциями
docker run -p
или Docker Compose ports:
.
Стандартные сетевые настройки Docker предоставляют контейнерам частные IP-адреса в основном как реализацию.подробно.Абоненты вне текущего хоста (а в некоторых случаях даже абоненты на одном хосте) не могут напрямую получить доступ к IP-адресам контейнеров;они должны связаться с хостом и использовать опубликованный TCP-порт контейнера.Если у контейнера нет опубликованного порта, он недоступен.
Между контейнерами, если они находятся в одной внутренней Docker-сети (или находятся в одном и том же файле docker-compose.yml
без явногоnetworks:
), они могут напрямую связываться друг с другом, используя имена контейнеров в качестве имен хостов.
Так что если вы запустили:
docker network create app
docker run --net app -p 80:80 -v ... nginx
docker run --net app service1
docker run --net app service2
docker run --net app service3
Тогда:
- Контейнер nginx может
proxy_pass http://service1/
, поскольку службы находятся в одной внутренней Docker-сети - Вызывающие абоненты вне хоста могут достигать
http://physical_host.example.com/
, а HTTP-порт 80 на хосте перенаправляется в контейнеры nginx - Вызывающие абоненты вне хоста не могут получить доступ к трем внутренним службам, кроме как через прокси-сервер nginx
Если это единственный элемент управления, который вы пытаетесь реализовать с помощью механизмов доступа Apache, тогда IP-адрес докераЗдесь вам достаточно защиты.