这是我对节点的第一个真正的问题。我最近将我的网站转换为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)
答案 0 :(得分:3)
如果您的服务器只接受https
,那么您必须在网址中指定https://
。这是浏览器知道您打算使用的协议的唯一方式。当您从浏览器的网址栏中的网址中遗漏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)。或者,许多托管服务提供商在其基础架构中内置了这一功能(内置于代理或负载均衡器中)。