Запустите 2 веб-сервера (webA [nginx] и webB [apache]) с помощью Docker и получите доступ к ним через браузер хоста. Я хотел бы, например, «http://webA" для доступа к webA и« http://webB" для доступа к webB.
Чтобы все сайты работали на одном порту, есть возможность использовать один веб-сервис в качестве прокси.
Вот пример для docker-compose файла:
version: '3'
services:
nginx_siteA:
image: nginx:latest
container_name: nginx_siteA
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
# all other stuff
...
apache_siteB:
image: httpd:latest
container_name: httpd_siteB
# all other stuff
...
Итак, в этом примере 2 веб-службы настроены и могут связываться друг с другом из сети Docker (вы можете пропинговать и / или прокручивать apache из nginx и наоборот). Но с хоста машины - вы можете связаться только с nginx, используя 80 порт.
Постскриптум nginx_siteA
и apache_siteB
являются именами служб, и их можно использовать в конфигурационных файлах в качестве имен доменов (имен хостов)
И настройте nginx для работы непосредственно с siteA и прокси SiteB, например:
server {
server_name siteA;
# all other stuff
......
}
server {
server_name siteB;
location /{
proxy_pass http://apache_siteB;
}
# all other stuff
....
}
Или используйте контейнер Apache таким же образом:
установить mod_proxy
и в файле Apache domain.conf добавить в VirtualHost
блочную директиву: ProxyPass / http://nginx_siteA/