Невозможно получить доступ к веб-серверу, размещенному на Docker, из внешней сети

Невозможно получить доступ к веб-серверу, размещенному на Docker, из внешней сети

Я нахожусь в процессе миграции небольшого личного веб-сайта из виртуальной машины VirtualBox в контейнер Docker, размещенный на моем персональном компьютере. Но я сталкиваюсь с проблемой, когда получаю сообщение "время ожидания соединения истекло" при попытке доступа к этому контейнеру из интернета (пытаюсь с телефона без Wi-Fi), с других компьютеров в той же сети все работает.

Вот какие тесты я провел до сих пор:

Локальная сеть

Все работает отлично как с http://localhost так иhttp://192.168.1.10с любого другого компьютера в сети

Из этого теста я понял, что мой компьютер и конфигурация Docker работают нормально, и сервер доступен извне.

Из интернета

На моем интернет-шлюзе у меня настроена переадресация портов. При перенаправлении на 192.168.1.15 у меня есть корректный доступ к серверу vm.

при перенаправлении на 192.168.1.10 я получаю тайм-аут шлюза, а инструмент проверки портов сообщает, что порт 80 закрыт

Из этого теста я понял, что мой провайдер не мешает, и мой шлюз правильно пересылает данные на правильный IP. Также нет проблем на стороне клиента (мой телефон/телефонный провайдер)

полезная конфигурация

  • Конфигурация docker-compose:
    version: "3.7"
    services:    
        proxy:
            image: nginx:stable
            ports:
                - "80:80"
            volumes:
                - ./proxy/conf.d:/etc/nginx/conf.d
  • ./proxy/conf.d/site.conf
    server {
        listen 80;
        server_name example.com;     # not actual DNS, but it doesn’t seem to be in cause.

        location / {
            deny all;
        }   
    }

да,работает отличнона самом деле я имею в виду, что сейчас я получаю ошибку 403 «Доступ запрещен»

  • переадресация порта шлюза (в пользовательском интерфейсе) порта 80 на порт 80 хоста 192.168.10
  • Сеть Virtualbox vm настроена как мост и имеет IP 192.168.1.15
  • все внутренние IP-адреса записаны как статические топология

Дайте мне знать, если вам может потребоваться какая-либо дополнительная информация.

Исключенный

Я намеренно исключил все переменные SSL и DNS, пока эта проблема не будет решена. Настройка будет выполнена позже.

Я в основном ищу идеи, что еще проверить, потому что все части, кажется, работают хорошо по отдельности, но мне явно чего-то не хватает.

правка: немного подробнее рассмотрел проблему закрытого порта/тайм-аута, выводимую командой curl с удаленного компьютера:

$  curl -v --output - 142.#.#.#
*   Trying 142.#.#.#:80...
* Connected to 142.#.#.# (142.#.#.#) port 80 (#0)
> GET / HTTP/1.1
> Host: 142.#.#.#
> User-Agent: curl/7.83.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 502 Connection timed out
< Date: Wed, 01 Jun 2022 16:34:06 GMT
< Connection: close
< Cache-Control: no-store
< Content-Type: text/html
< Content-Language: en
< Content-Length: 219
< 
<HEAD><TITLE>Connection timed out</TITLE></HEAD>
<BODY BGCOLOR="white" FGCOLOR="black">
<FONT FACE="Helvetica,Arial"><B>
 Connection timed out</B></FONT>

<!-- default "Connection timed out" response (502) -->
</BODY>
* Closing connection 0

вывод проверки порта

$ nmap 142.#.#.# -p 81
...
Host is up (0.077s latency).

PORT   STATE    SERVICE
80/tcp open     http


$ nc -zvw10 142.#.#.# 80
...
[142.#.#.#] 80 (http) open

но ping.eu, который я использовал первым, все еще показывает, что он закрыт. Не уверен, как они это проверяют

Связанный контент