Рейтинг:1

Docker Nginx возвращает 404 для конечной точки proxy_pass

флаг us

На отдельный ПК (который имеет локально доступный только 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 страница?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.