无法从外部网络访问 Docker 托管的 Web 服务器

无法从外部网络访问 Docker 托管的 Web 服务器

我正在将一个小型个人网站从 VirtualBox 虚拟机迁移到托管在我个人计算机上的 Docker 容器。但我遇到了一个问题,当我尝试从互联网访问该容器时(尝试使用没有 Wi-Fi 的手机),出现“连接超时”的情况,而在同一网络上的其他计算机上可以正常访问。

以下是我迄今为止所做的测试:

本地网络

使用 http://localhost 和http://192.168.1.10从网络上的任何其他计算机

我从该测试中了解到,我的计算机和 docker 配置运行正常,服务器可以从该计算机外部访问。

摘自互联网

在我的互联网网关上,我确实有一个端口转发设置。当重定向到 192.168.1.15 时,我确实可以正确访问虚拟机服务器。

当重定向到 192.168.1.10 时,我收到网关超时,并且端口检查工具显示端口 80 已关闭

我从该测试中了解到我的 ISP 没有妨碍我,我的网关正确地将数据转发到正确的 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 禁止错误

  • 网关端口转发(在 UI 中)端口 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 仍然显示它已关闭。不知道他们是如何检查的

相关内容