No se puede acceder a un servidor web alojado en Docker desde una red externa

No se puede acceder a un servidor web alojado en Docker desde una red externa

Estoy en el proceso de migrar un pequeño sitio web personal desde una máquina virtual virtualbox a un contenedor acoplable alojado en mi computadora personal. Pero me meto en un problema en el que se agota el tiempo de espera de la conexión cuando intento acceder a ese contenedor desde Internet (intentando con mi teléfono sin wifi). Funciona desde otras computadoras en la misma red.

Esto es lo que hice pruebas hasta ahora:

Red local

Todo funciona bien tanto usando http://localhost comohttp://192.168.1.10desde cualquier otro ordenador de la red

De esa prueba entiendo que mi computadora y la configuración de la ventana acoplable funcionan bien para que se pueda acceder al servidor desde fuera de esa computadora.

De Internet

En mi puerta de enlace de Internet, tengo una configuración de reenvío de puertos. Al redirigir a 192.168.1.15, tengo acceso correcto al servidor vm.

al redirigir a 192.168.1.10 obtengo el tiempo de espera de la puerta de enlace y la herramienta de verificación de puertos dice que el puerto 80 está cerrado

De esa prueba entiendo que mi ISP no se interpone en el camino y que mi puerta de enlace está reenviando correctamente los datos a la IP correcta. Tampoco es un problema del lado del cliente (mi teléfono/proveedor de teléfono)

configuración útil

  • configuración de composición de Docker:
    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;
        }   
    }

Sí,trabaja bienEn realidad quiero decir que recibo un error 403 prohibido en este momento.

  • puerto de puerta de enlace reenviar (en una interfaz de usuario) puerto 80 al puerto 80 host 192.168.10
  • La red Virtualbox vm está configurada como puente y tiene IP 192.168.1.15
  • todas las IP internas escritas son estáticas topología

Déjame saber si se requiere alguna otra información.

excluido

Excluí deliberadamente cualquier variable SSL y DNS hasta que se resuelva el problema y se configurará más adelante.

Principalmente estoy buscando ideas sobre qué más hacer para los chequeos porque todas las piezas parecen funcionar bien individualmente, pero obviamente me falta algo.

editar: analicé un poco más la salida del problema del puerto cerrado/tiempo de espera del comando curl desde una computadora remota:

$  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

salida de verificación de puerto

$ 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

pero el ping.eu que usé primero todavía lo muestra como cerrado. No estoy seguro de cómo lo están comprobando.

información relacionada