Используя Nginx, как я могу заставить другие компьютеры в той же сети Wi-Fi видеть поддомен?

#docker #nginx #docker-compose #dns #subdomain

Вопрос:

Как я могу заставить другие компьютеры в той же сети Wi-Fi видеть поддомен?

Проблема: В настоящее время я запускаю реализацию docker на компьютере-сервере в домашней сети Wi-Fi. Когда я посещаю поддомены на этом компьютере-сервере, я вижу, как загружаются назначенные контейнеры. Однако, когда я посещаю поддомен с другого компьютера в той же сети Wi-Fi, он вообще не может найти сервер. Когда я посещаю основной домен, я вижу компьютер.

Допущения:

  1. Есть проблема с DNS?
  2. В файле хоста компьютеров, не относящихся к серверу, отсутствует конфигурация?
  3. Неправильная конфигурация на маршрутизаторе ASUS?

Сервер и маршрутизатор: Сервер Mac OS XI. Маршрутизатор ASUS.

Хост-файловый сервер:

 127.0.0.1 hub.local
127.0.0.1 container1.hub.local
127.0.0.1 container2.hub.local
 

Файл хоста Другой ПК:

 [SERVER_NETWORK_IP] hub.local
[SERVER_NETWORK_IP] container1.hub.local
[SERVER_NETWORK_IP] container2.hub.local
 

Файл композитора:

 version: '3.7'
services:
  proxy:
    image: 'jwilder/nginx-proxy:latest'
    container_name: proxy-test
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - './nginx-proxy.conf:/etc/nginx/conf.d/nginx-proxy.conf:ro'
    networks:
      - default
  container1:
    image: wordpress
    container_name: container-1
    environment:
      VIRTUAL_HOST: container1.hub.local
    ports:
      - '8080:80'
    networks:
      - default
  container2:
    image: wordpress
    container_name: container-2
    environment:
      VIRTUAL_HOST: container2.hub.local
    ports:
      - '8081:80'
    networks:
      - default
  default:
    container_name: default
    image: nginx
    environment:
      VIRTUAL_HOST: hub.local
    ports:
      - '8082:80'
    volumes:
      - './src:/var/www/'
      - './webnginx/conf.d:/etc/nginx/conf.d'
    networks:
      - default
networks:
  default:
    driver: bridge
 

Nginx-прокси.conf

 server {
    listen          80;
    server_name     container1.hub.local;
    location / {
        proxy_pass http://container-1;
    }
}

server {
    listen        80;
    server_name     container2.hub.local;

    location / {
      proxy_pass  http://container-2;
    }
}

server {
    listen        80;
    server_name     hub.local;

    location / {
      proxy_pass  http://defau<
    }
}

 

Любая помощь или предложения по улучшению этой реализации приветствуются.

Комментарии:

1. что является основным доменом ? работает ли telnet SERVER_NETWORK_IP 80 ?

2. @DefSoudani Не уверен в части telnet, но основным доменом является hub.local. Я почти на 99,99% уверен, что на данный момент это проблема DNS.

Ответ №1:

Кредит принадлежит парню по имени Поки через Битмердж. Возникла проблема с записями в файле /etc/hosts. Необходимо было явно добавить каждый поддомен в связи с сетевым IP-адресом сервера. Я использовал ifconfig, чтобы найти IP-адрес сервера.

Пример:

 192.0.0.4 container1.hub.local