【问题标题】:Domain name only works when adding Https, Node域名仅在添加 Https、Node 时有效
【发布时间】:2018-03-06 07:19:59
【问题描述】:

这是我的第一个真正的节点问题。我最近将我的网站转换为 https。这很好,但我的网站只能由“https://www.example.com”访问。在转换之前,我使用了端口 80(默认端口)和基本的快速路由。我曾经能够连接到我的服务器的 IP 地址并输入域名“www.example.com”。我将 DNS 设置为使用 ipv4 和 ipv6 重定向到服务器的 IP 地址。切换到 https 后,我不再能够使用 IP 地址和端口 443(我在端口 443 上托管)访问服务器。我想知道为什么我不能使用 ip 地址 + 端口号 (123.456.78.90:443) 访问我的网站,以及为什么我在使用 https://www.example.com 而不仅仅是 www.example 访问我的网站时必须如此具体。 com.

express = require('express');
app = express();

var http = require('https')
var fs = require('fs')

var sslPath = '/etc/letsencrypt/live/www.example.site/'

var options = {
    key: fs.readFileSync(sslPath + 'privkey.pem'),
    cert: fs.readFileSync(sslPath + 'fullchain.pem')
}

app.use(express.static("public"));
app.set("view engine", "ejs");

 app.get("/", function(req,res){
     console.log("Someone Connected")
     res.render("homepage");
});

server = http.createServer(options, app)
io = require('socket.io').listen(server)
server.listen(443)

【问题讨论】:

  • 您所说的“不再能够访问”到底是什么意思,当您尝试https://123.456.78.90:443 时究竟会发生什么?
  • 那很快。当我说不再能够访问时,我无法输入网址“123.456.78.90:433”它说“页面不工作,123.456.78.90 没有发送任何数据”。我以前可以,当它不是 https

标签: express https dns


【解决方案1】:

如果您的服务器只接受https,那么您必须在URL 中指定https://。这是浏览器知道您打算使用的协议的唯一方式。当您在浏览器的 url 栏中省略了https:// 时,无论您指定什么端口号,浏览器都会假定为http

您可以让您的服务器在端口 80 上响应 http 并自动转发到 https。然后,您可以在浏览器中输入www.example.com,它会自动重定向到https://www.example.com

您的服务器将永远不会响应 123.456.78.90:443 浏览器将变为 http://123.456.78.90:443 因为在端口 443 上,您正在侦听 https 连接,而不是 http 连接(您不能同时侦听同一个端口)。

使用所描述的自动重定向逻辑,您可以在浏览器中输入123.456.78.90,它会重定向到https://123.456.78.90,这样就可以了。

您可以自己实现自动重定向(设置一个简单的 http 服务器侦听端口 80,并将所有传入请求重定向到相同的 URL,但前面带有 https)。或者,许多托管服务提供商在其基础架构中提供了此功能(内置在代理或负载平衡器中)。

【讨论】:

  • 谢谢,正在调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2013-08-07
  • 2018-12-27
  • 1970-01-01
相关资源
最近更新 更多