域名仅在添加Https,Node时有效

问题描述 投票:0回答:1

这是我对节点的第一个真正的问题。我最近将我的网站转换为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)
express https dns
1个回答
3
投票

如果您的服务器只接受https,那么您必须在URL中指定https://。这是浏览器知道您打算使用的协议的唯一方式。当您从浏览器的URL栏中的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)。或者,许多托管服务提供商都在其基础架构中内置了这一功能(内置于代理或负载均衡器中)。

© www.soinside.com 2019 - 2024. All rights reserved.