Ответ 1
В случае, если кто-то все еще ищет ответ. jwilder/nginx-proxy позволяет вам использовать пользовательскую конфигурацию Nginx как для всего прокси, так и для per VIRTUAL_HOST.
Вот как вы можете сделать это с помощью конфигурации местоположения Per-VIRTUAL_HOST.
- Внутри вашей папки проектов создайте еще одну папку - "vhost.d".
- Создайте файл "whoami.local" с пользовательской конфигурацией nginx внутри папки "vhost.d". Этот файл должен иметь то же имя, что и VIRTUAL_HOST!
./vhost.d/whoami.local
location /app1 {
proxy_pass http://app1:8000;
}
location /app2 {
proxy_pass http://app2:8000;
}
- Создайте файл docker-compose.yml.
./docker-compose.yml
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "8080:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /path/to/vhost.d:/etc/nginx/vhost.d:ro
gateway:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local
app1:
image: jwilder/whoami
app2:
image: jwilder/whoami
- Запустите docker-compose up
- Проверьте конфигурацию
В bash запустить:
$ curl -H "Host: whoami.local" localhost:8080
I'm 1ae273bce7a4
$ curl -H "Host: whoami.local" localhost:8080/app1
I'm 52b1a7b1992a
$ curl -H "Host: whoami.local" localhost:8080/app2
I'm 4adbd3f9e7a0
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a659a4d4b0a jwilder/nginx-proxy "/app/docker-entrypo…" 54 seconds ago Up 53 seconds 0.0.0.0:8080->80/tcp nginxreverseproxy_nginx-proxy_1
4adbd3f9e7a0 jwilder/whoami "/app/http" 54 seconds ago Up 53 seconds 8000/tcp nginxreverseproxy_app2_1
52b1a7b1992a jwilder/whoami "/app/http" 54 seconds ago Up 53 seconds 8000/tcp nginxreverseproxy_app1_1
1ae273bce7a4 jwilder/whoami "/app/http" 54 seconds ago Up 53 seconds 8000/tcp nginxreverseproxy_gateway_1
Вы также можете добавить домен "whoami.local" в файл /etc/hosts и напрямую звонить в этот домен.
/и т.д./хосты
...
127.0.0.1 whoami.local
...
Результат:
$ curl whoami.local:8080
I'm 52ed6da1e86c
$ curl whoami.local:8080/app1
I'm 4116f51020da
$ curl whoami.local:8080/app2
I'm c4db24012582