Как подключиться к веб-сайту в контейнере docker за пределами хоста [Windows server] nginx

#angular #containers

#angular #контейнеры

Вопрос:

мой веб-сайт находится внутри контейнера docker и работает на сервере по url localhost: 9902. моим веб-сервером является nginx и Windows server, но когда я запрашиваю http://myip:80 с внешнего сервера это не работает, мой веб-сайт с nginx находится внутри контейнера docker

 worker_processes auto;      
events {
  worker_connections 512;    
}
http {
  server {
    listen *:80;            
    server_name "";         
    root /usr/share/nginx/html;
    include       /etc/nginx/mime.types;
    location / {
      proxy_pass                http://localhost:9902/;
      proxy_redirect            off;
      proxy_set_header          Host  $host;
      proxy_set_header          X-Real-IP          $remote_addr;
      proxy_set_header          X-Forwarded-For    $proxy_add_x_forwarded_for;
      proxy_set_header          X-Forwarded-Proto  http;
      proxy_buffer_size         128k;
      proxy_buffers             8 128k;
      proxy_busy_buffers_size   256k;
      try_files $uri /index.html;
    }
  }
}
 

Ответ №1:

Ваша конфигурация Nginx кажется правильной, и если вы можете получить к ней доступ в своей локальной сети, это может быть только сетевой проблемой.

Есть несколько вещей, которые необходимо проверить:

  1. У вашего контейнера Docker порт 80 привязан к внешней стороне? (документ здесь)
  2. Если «снаружи» — это Интернет, используйте HTTP://your-public-ip:80
  3. Создайте правило NAT для перенаправления всего входящего трафика с вашего маршрутизатора на порт 80 на IP-адрес вашего сервера на порт 80. Проверьте руководство пользователя вашего маршрутизатора.

Я никогда не пытался получить доступ к своим контейнерам docker из Интернета, но с правилом NAT в вашем маршрутизаторе это должно сработать.

Надеюсь, это поможет!