У меня есть выделенный сервер, на котором я хочу разместить разные сайты, каждый из которых работает в отдельном док-контейнере.
У меня нет домена, поэтому я хочу получить доступ к серверу по IP-адресу или URL-адресу dynDNS. Каждый сайт должен быть
доступны в подпапке моего IP-адреса / dyndns, например, так:
http://10.10.10.10/site-a --> redirects to e.g. nginx running in container A
http://10.10.10.10/site-b --> redirects to e.g. appache running in container B
и т.д.
Я думаю, что я должен использовать обратный прокси для этого. Я нашел этот https://github.com/jwilder/nginx-proxy, который кажется довольно простым с точки зрения
Возможность расширения, если я планирую добавить дополнительный контейнер в будущем.
Однако я всегда получаю HTTP 503 Сервис временно недоступен, если я пытаюсь получить доступ к http://10.10.10.10/site-a или
http://10.10.10.10/site-a или http://10.10.10.10 напрямую.
Я попробовал пример whoami, как описано в https://github.com/jwilder/nginx-proxy#docker-compose
Это отлично работает, если я пытаюсь
curl -H "Host: whoami.local" localhost
Я изменил этот пример docker-compose.yml, чтобы он соответствовал моему сценарию использования:
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
site-a:
image: nginx
volumes:
- /home/chris/docker/site-a:/usr/share/nginx/html
environment:
- VIRTUAL_HOST=site-a.local
site-b:
image: nginx
volumes:
- /home/chris/docker/site-b:/usr/share/nginx/html
environment:
- VIRTUAL_HOST=site-b.local
Site-a и site-b - это просто контейнеры nginx, в которых размещается статический html-файл для целей тестирования.
Выполнение
curl -H "Host: site-a.local" http://10.10.10.10
возвращает статический html с site-a
curl -H "Host: site-b.local" http://my-dyn-dns.com
возвращает статический html с site-b
Но если я пытаюсь получить доступ к любому из этих URL через браузер, я снова получаю HTTP 503: - (
файл nginx.conf не затрагивается в образе dockerhub:
/etc/nginx# cat nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
daemon off;