我正在尝试将从 Google Domains 获得的域名连接到 Google Cloud Platform VM 实例。我的域名是 .dev,当我尝试 nslookup 和 dig trace 时,它们已经指向正确的 IP 地址。使用此 IP 访问网站很正常。我只是无法通过域名访问同一个网站。
以下是我所做的配置:
在我的虚拟机实例(Compute Engine API)中:
- 启用 http 和 https 流量
- 具有网络标签 http-server 和 https-server
在 VPC 网络 API 中:
- 将我的外部IP设为静态
- 防火墙 tcp:443 允许流量(默认允许 https 规则)
- 当我尝试运行“netstat -tulpn | grep LISTEN”时,端口 443 没有显示在列表中。 Web 服务器可能没有监听 443 端口
在网络服务 API 中:
- 添加了与 Google Domains 的 DNS 和 VM 实例的外部 IP 匹配的 A 和 CNAME 记录集
在 Google Domains 中:
- 将名称服务器修改为与网络服务 API 注册器设置值中的名称服务器相同(在自定义名称服务器选项卡下添加)
截图: 防火墙截图 网络区截图 有关防火墙的虚拟机设置
请理解我没有网络背景。非常感谢您的帮助!
答案1
根据@John Hanley 的评论回答:
带有 .dev 域名扩展名的网站需要打开端口 443。运行以下命令检查 Web 服务器是否正在监听此端口:netstat -tulpn | grep LISTEN。
由于(如上面的问题所述)port443 没有出现在列表中,请配置您的 Web 服务器以监听端口 443。就我而言,我使用 nginx 作为我的服务器,因此我编辑了 /etc/nginx/nginx.conf 中的文件以使我的服务器监听端口 443。
此时,尝试访问网站将返回错误,提示您没有 SSL 证书。因此,请创建一个。我为此使用了 certbot 来生成 ssl 证书和密钥。
返回 nginx.conf 文件并打开 ssl,添加 ssl 证书和密钥。它应该看起来像这样:
... server{ server_name example.com www.example.com; listen 443; ssl on; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/bdcs.dev/privkey.pem; location / { ... } ... } ...
- 重启服务器(sudo systemctl restart nginx)