我正在将一个小型个人网站从 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 禁止错误
如果还需要其他信息,请告知我
排除
我特意排除了任何 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 仍然显示它已关闭。不知道他们是如何检查的