所以我得到了一个域名,suputamadre.es
我启动了一个谷歌云实例并为其分配了一个 IP,例如 1.2.3.4
我启动了 django 服务器来监听 0.0.0.0:80
我尝试通过 Chrome 进行连接http://1.2.3.4或者http://1.2.3.4:80并且成功了。太棒了。
在 Google Cloud DNS 上设置我的域名(域名从 GoDaddy 购买,因此将名称服务器指向 Google Cloud)
设置指向 1.2.3.4 的 A 记录 suputamadre.es
转到 cmd 并执行 ping suputamadre.es 返回 1.2.3.4
在浏览器中输入 suputamadre.es 会返回“连接被拒绝”错误,但 suputamadre.es:80 可以工作。这是为什么?我怎样才能将此域指向我的服务器?尝试过做 CNAME,也没用……
说到主题,有没有办法将其指向 :80 和 :443 以支持 SSL,而无需运行两个并发服务器?或者甚至将域指向 1.2.3.4:8000,而无需使用重定向,因为 SRV 在浏览器中不起作用?
非常感谢。我已经被这个问题困扰了两天了,无论我尝试用谷歌搜索什么,似乎都不起作用。更不用说,如果我用谷歌搜索关于“DNS A 注册”的内容,谷歌会认为我在谈论A登记...
答案1
看来你的问题已经部分解决了。如果我把http://suputamadre.es在我的浏览器中,我可以看到您的“Django 设置完成”页面,所以这似乎正在起作用。
关于 :80 与 :443 SSL 问题,这通常是通过端口 80 上的重定向来完成的。例如:用户输入http://suputamadre.es该请求被你的 Web 服务器在端口 80 上接收,然后 Web 服务器发回一个重定向到 https://suputamadre.es(默认情况下在端口 443 上提供服务,浏览器将使用该端口而无需指定)。这样,所有流量都通过 http 提供服务s在端口 443 上。到端口 80 的任何内容都会重定向到端口 443。
- 要在 Nginx 中设置重定向,请参见此处:在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https?
- 要在 Apache 中设置重定向,请参见此处:在 Apache 中从 http 重定向到 https
答案2
正如 DrewZa 所指出的,您可以使用 nginx 来实现这些目的。它是一款出色的轻量级 Web 服务器。请看这里:
在 Google Cloud Platform 上安装 NGINX Plus
至于从 80 到 443 的端口转发:
在 nginx.conf 文件中创建一个服务器条目,然后您可以执行以下操作:
server {
listen 80;
server_name suputamadre.es;
proxy_set_header X-Real-IP $remote_addr;
location / {
rewrite ^ https://$host$uri permanent;
}
}
这会将所有请求从 80 重定向到 443