GCloud https 到外部 ID 和云 DNS 不工作
GCloud https to external ID and Cloud DNS not working
很明显,我对网络知之甚少,非常感谢所有提示和解释。
我使用 gunicorn 和 nginx 在 flask 中编写了一个小网站应用程序。它是容器化的,并且在本地工作。我的目标是将它部署在 gcloud 上并有一个正确的域名指向它。
我设置了一个小型计算实例。我在该实例上使用了标准的 http 和 https 防火墙。我保留并设置了一个外部 IP EXT_IP。此外,我在该实例上为 443 入口和出口设置了允许防火墙。我 运行 docker 容器,同时将端口 80 和 443 映射到容器端口。我不确定是否有必要将 443 映射到容器端口。
当我 运行 http://[EXT_IP] 时,应用程序按预期工作。
然而,当我只是点击外部 IP 或使用 https 请求时,我确实收到 "Secure Connection Failed" 错误。
当我 运行 nmap EXT_IP
我得到以下输出,看起来很合理。
Host is up (0.039s latency).
Not shown: 994 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3389/tcp closed ms-wbt-server
8000/tcp closed http-alt
8001/tcp closed vcom-tunnel
Nmap done: 1 IP address (1 host up) scanned in 10.64 seconds
此外,我尝试设置 Cloud DNS。我在 Google 域上购买了一个域,并为该域设置了一条 A 记录到保留的外部 IP,并为该域的 www.domain 设置了一个 CNAME 别名。
当我尝试使用域访问该站点时,出现未找到错误。
当我使用 host domain_name
我得到
Host [Domain Name] not found: 3(NXDOMAIN)
我怀疑有两件事出了问题。 https和DNS映射好像是分开的问题,但我不确定。
谁能帮我解决其中一个或两个问题?非常感谢您。
您有两个不同的问题:
- DNS 服务器配置;
- NGINX 网络服务器配置。
要解决 DNS 问题,您应该遵循以下两种方式之一:
- 仅使用 Google Domains:
- 按照文档 Resource records;
在 Google 域端配置必要的 DNS 记录
- remove 来自 Google Cloud DNS 的区域。
- 切换到Google Cloud DNS:
- create 您域的托管区域;
- set custom DNS servers(与您在上一步创建的托管区域中看到的 NS 记录相同)为您的域。
之后您应该等待 24-48 小时进行 DNS 传播。您可以使用 dnsmap.io or mxtoolbox.com 等服务在线检查 DNS 的状态。如果一切配置正确,您将能够通过 http://domain.name
and/or http://www.domain.name
查看您的应用程序。
要解决 SSL 问题,您应该按照这些文章中的说明进行操作 How To Secure a Containerized Node.js Application with Nginx, Let's Encrypt, and Docker Compose and Nginx and Let’s Encrypt with Docker in Less Than 5 Minutes to solve issue with SSL。
很明显,我对网络知之甚少,非常感谢所有提示和解释。 我使用 gunicorn 和 nginx 在 flask 中编写了一个小网站应用程序。它是容器化的,并且在本地工作。我的目标是将它部署在 gcloud 上并有一个正确的域名指向它。
我设置了一个小型计算实例。我在该实例上使用了标准的 http 和 https 防火墙。我保留并设置了一个外部 IP EXT_IP。此外,我在该实例上为 443 入口和出口设置了允许防火墙。我 运行 docker 容器,同时将端口 80 和 443 映射到容器端口。我不确定是否有必要将 443 映射到容器端口。 当我 运行 http://[EXT_IP] 时,应用程序按预期工作。 然而,当我只是点击外部 IP 或使用 https 请求时,我确实收到 "Secure Connection Failed" 错误。
当我 运行 nmap EXT_IP
我得到以下输出,看起来很合理。
Host is up (0.039s latency).
Not shown: 994 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3389/tcp closed ms-wbt-server
8000/tcp closed http-alt
8001/tcp closed vcom-tunnel
Nmap done: 1 IP address (1 host up) scanned in 10.64 seconds
此外,我尝试设置 Cloud DNS。我在 Google 域上购买了一个域,并为该域设置了一条 A 记录到保留的外部 IP,并为该域的 www.domain 设置了一个 CNAME 别名。
当我尝试使用域访问该站点时,出现未找到错误。
当我使用 host domain_name
我得到
Host [Domain Name] not found: 3(NXDOMAIN)
我怀疑有两件事出了问题。 https和DNS映射好像是分开的问题,但我不确定。
谁能帮我解决其中一个或两个问题?非常感谢您。
您有两个不同的问题:
- DNS 服务器配置;
- NGINX 网络服务器配置。
要解决 DNS 问题,您应该遵循以下两种方式之一:
- 仅使用 Google Domains:
- 按照文档 Resource records; 在 Google 域端配置必要的 DNS 记录
- remove 来自 Google Cloud DNS 的区域。
- 切换到Google Cloud DNS:
- create 您域的托管区域;
- set custom DNS servers(与您在上一步创建的托管区域中看到的 NS 记录相同)为您的域。
之后您应该等待 24-48 小时进行 DNS 传播。您可以使用 dnsmap.io or mxtoolbox.com 等服务在线检查 DNS 的状态。如果一切配置正确,您将能够通过 http://domain.name
and/or http://www.domain.name
查看您的应用程序。
要解决 SSL 问题,您应该按照这些文章中的说明进行操作 How To Secure a Containerized Node.js Application with Nginx, Let's Encrypt, and Docker Compose and Nginx and Let’s Encrypt with Docker in Less Than 5 Minutes to solve issue with SSL。