在 Google Cloud 上,Domain/IP 不会加载,但 domain/IP 和 port:8080 会加载

On Google Cloud, Domain/IP doeson't load but domain/IP with port:8080 does

我有一个 Django 应用程序在 Google 云平台上的 Docker 容器上损坏。

它可以像 domain/IP:8080 一样通过 :port 访问,但不能在 domain/IP

上访问

可能是什么问题?

以下是防火墙规则:

nmap

Host is up (0.0013s latency).
Not shown: 995 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http
443/tcp  closed https
3389/tcp closed ms-wbt-server
8080/tcp open   http-proxy

网络统计-lnp | grep 80

tcp6       0      0 :::8080                 :::*                    LISTEN      -
udp6       0      0 fe80::70cf:23ff:fe8:123 :::*                                -
udp6       0      0 fe80::8830:1bff:fe4:123 :::*                                -
udp6       0      0 fe80::42:13ff:fe38::123 :::*                                -
udp6       0      0 fe80::4001:aff:fe96:123 :::*                                -
unix  2      [ ACC ]     STREAM     LISTENING     22590    -                   @/containerd-shim/moby/60315b1bbaa927bf4f0cc5cffd6d4203e40c/shim.sock@
unix  2      [ ACC ]     STREAM     LISTENING     18084    -                   /run/containerd/containerd.sock

根据您的 nmap 输出,您的 VM 似乎实际上并未在端口 80 或 443 上侦听:

80/tcp   closed http
443/tcp  closed https

Web 浏览器默认使用 http 端口 80(或 443 用于 https),这就是 URL 栏中那些 IP 省略端口的原因。

您需要将您的服务器配置为侦听端口 80。看起来确实因为您的防火墙在端口 8080 上传递流量,所以实例上有 http-server 标记,所以端口 80 被允许通过您的防火墙.

由于是在docker容器中,想必你可以配置端口转发转发到主机的80端口而不是8080端口,比如在启动容器时通过-p 80:8080