На отдельный ПК (который имеет локально доступный только IP 192.168.1.148
), у меня есть 3 контейнера: docker_compose_ui
, docker_compose_web_console
& нгинкс
Два контейнера прослушивают порты но не были отправлены к хозяину:
docker_compose_ui 5000/TCP
docker_compose_web_console 8888/tcp
Nginx пересылается:
nginx 0.0.0.0:80->80/tcp, :::80->80/tcp
docker_compose_ui
& docker_compose_web_console
находятся в сети хребет
.
нгинкс
находится в сетях хребет
и наружу
.
Что-нибудь на хребет
не предназначены для переадресации хостом, поэтому не является общедоступным.
Что-нибудь на наружу
предназначены для переадресации хостом, таким образом общедоступный.
РЕДАКТИРОВАТЬ: Чтобы уточнить, когда я говорю общедоступный, я просто имел в виду внешний от хост-компьютера, я еще не перенаправлял какие-либо порты в Интернет через свой маршрутизатор.
Если я осмотреть
сеть хребет
Я вижу IP-адреса:
нгинкс 172.21.0.4/16
docker_compose_ui 172.21.0.2/16
docker_compose_web_console 172.21.0.3/16
Если я осмотреть
сеть наружу
Я вижу IP-адрес для мгинкс
, 172.22.0.2/16
.
Если я свернусь от нгинкс
к docker_compose_ui
:
docker exec nginx curl http://docker_compose_ui:5000
Я получаю ответ в формате html и Хорошо, так docker_compose_ui
оба доступны из нгинкс
и разрешимы.
Если я сделаю выполнение докера nginx nginx -T
Я вижу, что конфиг загружается nginx (последний сервер
директива).
nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке
nginx: проверка файла конфигурации /etc/nginx/nginx.conf прошла успешно
# файл конфигурации /etc/nginx/nginx.conf:
# /etc/nginx/nginx.conf
пользователь nginx;
# Автоматически устанавливать количество рабочих процессов в зависимости от количества ядер ЦП.
рабочие_процессы авто;
# Позволяет использовать JIT для регулярных выражений, чтобы ускорить их обработку.
pcre_jit включен;
# Настраивает регистратор ошибок по умолчанию.
error_log /var/log/nginx/error.log предупреждение;
# Включает файлы с директивами для загрузки динамических модулей.
включить /etc/nginx/modules/*.conf;
# Раскомментируйте, чтобы включить файлы с фрагментами конфигурации в корневой контекст.
# ПРИМЕЧАНИЕ. Это будет включено по умолчанию в Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;
События {
# Максимальное количество одновременных соединений, которое может быть открыто
# рабочий процесс.
worker_connections 1024;
}
http {
# DNS-преобразователь Docker
резолвер 127.0.0.11 ipv6=выкл.;
# Включает сопоставление расширений имен файлов с типами ответов MIME.
# и определяет тип по умолчанию.
включить /etc/nginx/mime.types;
default_type application/octet-stream;
# Серверы имен, используемые для преобразования имен вышестоящих серверов в адреса.
# Это также необходимо при использовании tcpsocket и udpsocket в модулях Lua.
#resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
# Не сообщать клиентам версию nginx. По умолчанию включено.
server_tokens отключены;
# Указывает максимально допустимый размер тела клиентского запроса, т.к.
# указано в заголовке запроса Content-Length. Если заявленное содержание
# длина больше этого размера, то клиент получает HTTP
# код ошибки 413. Установите 0, чтобы отключить. По умолчанию «1 м».
client_max_body_size 1м;
# Sendfile копирует данные между одним FD и другим из ядра,
# что более эффективно, чем read() + write(). По умолчанию отключено.
отправить файл включен;
# Заставляет nginx попытаться отправить заголовок HTTP-ответа одним пакетом,
# вместо использования частичных кадров. По умолчанию выключено.
tcp_nopush включен;
# Включает указанные протоколы. По умолчанию используется TLSv1 TLSv1.1 TLSv1.2.
# СОВЕТ: Если вы не обязаны поддерживать старые клиенты, удалите TLSv1.1.
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# Путь к файлу с параметрами Диффи-Хеллмана для шифров EDH.
# СОВЕТ: Создайте с помощью: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
#ssl_dhparam /etc/ssl/nginx/dh2048.pem;
# Указывает, что наши шифровальные костюмы должны быть предпочтительнее клиентских шифров.
# По умолчанию выключено.
ssl_prefer_server_ciphers включен;
# Включает общий кеш SSL с размером, который может вместить около 8000 сеансов.
# По умолчанию 'нет'.
ssl_session_cache общий: SSL: 2 м;
# Указывает время, в течение которого клиент может повторно использовать параметры сеанса.
# По умолчанию '5m'.
ssl_session_timeout 1 час;
# Отключите сеансовые билеты TLS (они небезопасны). По умолчанию включено.
ssl_session_tickets выключен;
# Включить сжатие ответов.
gzip включен;
# Установите HTTP-заголовок Vary, как определено в RFC 2616. По умолчанию отключено.
gzip_vary включен;
# Вспомогательная переменная для проксирования веб-сокетов.
карта $http_upgrade $connection_upgrade {
обновление по умолчанию;
'' близко;
}
# Указывает основной формат журнала.
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$статус $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# Устанавливает путь, формат и конфигурацию для записи в буферизованный журнал.
журнал_доступа /var/log/nginx/access.log основной;
# Включает конфигурации виртуальных хостов.
включить /etc/nginx/sites-enabled/*;
}
# СОВЕТ: Раскомментируйте, если вы используете потоковый модуль.
#include /etc/nginx/stream.conf;
# файл конфигурации /etc/nginx/mime.types:
типы {
текст/html html htm shtml;
текст/CSS CSS;
текст/xml xml;
изображение/gif gif;
изображение/jpeg jpeg jpg;
приложение/javascript js;
приложение/атом+xml атом;
приложение/rss+xml rss;
текст/математика ммл;
текст/простой текст;
текст/vnd.sun.j2me.app-дескриптор jad;
текст/vnd.wap.wml wml;
текст/x-компонент htc;
изображение/png png;
изображение/svg+xml svg svgz;
изображение/tiff tif tiff;
изображение/vnd.wap.wbmp wbmp;
изображение/веб-сайт;
изображение/значок x ico;
изображение/x-jng jng;
изображение/x-ms-bmp bmp;
шрифт/woff woff;
шрифт/woff2 woff2;
приложение/java-архив jar war ear;
приложение/json json;
приложение/mac-binhex40 hqx;
документ приложения/msword;
заявка/pdf pdf;
приложение/постскриптум ps eps ai;
приложение/rtf rtf;
приложение /vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml кмл;
application/vnd.google-earth.kmz кмз;
приложение/vnd.ms-excel xls;
приложение /vnd.ms-fontobject eot;
приложение /vnd.ms-powerpoint ppt;
приложение/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
приложение/vnd.oasis.opendocument.text odt;
приложение/vnd.openxmlformats-officedocument.presentationml.presentation
пткс;
приложение/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
приложение/vnd.openxmlformats-officedocument.wordprocessingml.document
документ;
приложение /vnd.wap.wmlc wmlc;
приложение /x-7z-сжатый 7z;
приложение /x-cocoa cco;
приложение/x-java-архив-diff jardiff;
приложение/x-java-jnlp-файл jnlp;
запуск приложения /x-makeself;
приложение/x-perl pl pm;
приложение/x-pilot prc pdb;
приложение /x-rar-сжатый rar;
application/x-redhat-package-manager об/мин;
приложение /х-море море;
приложение /x-shockwave-flash swf;
приложение /x-stuffit сидеть;
приложение/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
приложение /x-xpinstall xpi;
приложение/xhtml+xml xhtml;
приложение/xspf+xml xspf;
приложение/zip-архив;
приложение/октет-поток bin exe dll;
приложение/октетный поток deb;
приложение/октет-поток dmg;
приложение/октетный поток iso img;
приложение/октет-поток msi msp msm;
аудио/миди мид миди кар;
аудио/мпег мп3;
аудио/огг огг;
аудио/x-m4a m4a;
аудио/x-realaudio ra;
видео/3gpp 3gpp 3gp;
видео/mp2t ц;
видео/mp4 mp4;
видео/mpeg mpeg mpeg mpg;
видео/быстрое перемещение;
видео/вебм вебм;
видео/x-flv flv;
видео/x-m4v m4v;
видео/x-мнг мнг;
видео/x-ms-asf asx asf;
видео/x-ms-wmv wmv;
видео/x-msvideo avi;
}
# файл конфигурации /etc/nginx/sites-enabled/_default.conf:
# Это конфигурация сайта по умолчанию, которая просто возвращает 404, предотвращая
# шанс доступа к любому другому виртуальному хосту.
сервер {
слушать 80 default_server;
слушать [::]:80 default_server;
# Все это 404
место расположения / {
вернуть 404;
}
# Вам может понадобиться это, чтобы предотвратить возврат 404 рекурсии.
местоположение = /404.html {
внутренний;
}
}
# файл конфигурации /etc/nginx/sites-enabled/docker_compose_ui.conf:
сервер {
слушать 80;
#server_name localhost;
имя сервера _;
access_log /var/log/nginx/docker_compose_ui.access.log основной;
расположение /докер-компози-уи/ {
proxy_pass http://docker_compose_ui:5000;
}
местоположение /веб-консоль/ {
proxy_pass http://docker_compose_web_console:8888;
}
местоположение/веб-консоль/exec {
proxy_pass http://docker_compose_web_console:8888;
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "обновление";
}
}
конфиг docker-compose (два отдельных файла):
--- # docker-compose-ui.yml
версия: "3.9"
Сервисы:
docker_compose_ui:
изображение: francescou/docker-compose-ui
имя_контейнера: docker_compose_ui
имя хоста: docker_compose_ui
перезапуск: если не остановлен
рабочий_каталог: /opt/docker-compose-projects
среда:
- 'WEB_CONSOLE_PATTERN=/web-console/?cid={containerName}&cmd={command}'
тома:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/docker-compose-pojects:/data/docker/docker-compose-ui
сети:
- позвоночник
веб-консоль:
изображение: битбулл/докер-exec-веб-консоль
имя_контейнера: docker_compose_web_console
имя хоста: docker_compose_web_console
перезапуск: если не остановлен
среда:
- 'CONTEXT_PATH=/веб-консоль/'
только для чтения: правда
тома:
- /var/run/docker.sock:/var/run/docker.sock
сети:
- позвоночник
сети:
костяк:
внешний: правда
--- # nginx.yml
версия: "3.9"
Сервисы:
нгинкс:
изображение: nginx: mainline-alpine
имя_контейнера: nginx
перезапуск: если не остановлен
тома:
- /данные/докер/nginx:/etc/nginx
- /var/журнал/nginx:/var/лог/nginx
- /вар/выполнить:/вар/выполнить
- /var/кэш/nginx
порты:
- "80:80"
сети:
- позвоночник
- наружу
сети:
костяк:
внешний: правда
снаружи:
внешний: правда
Делает http://192.168.1.148/
с моего ноутбука возвращается стандартное сообщение «Nginx установлено».
Почему же тогда http://192.168.1.148/docker-compose-ui/
с моего ноутбука вернуть только ошибку HTTP 404 страница?