如何配置 Google Compute Engine 以将 HTTPS 用于 nodejs 服务器?
How do I Configure Google Compute Engine to use HTTPS for nodejs server?
我想 运行 nodejs & socket.io 服务器在 google 计算引擎中使用 https / SSL。
我从 https://cloud.google.com/compute/docs/load-balancing/http/ssl-certificates 安装了自签名证书。
现在,如何让nodejs服务器使用https协议?
谢谢,
您需要做很多事情来配置 nodeJS 服务器以使用 HTTPs。我建议 Nginx (http://nginx.org/en/docs/http/configuring_https_servers.html) 设置 https 端口 443 连接以在 nginx 层终止。然后使用 Nginx 中的 proxy_pass 指令将所有这些连接代理到您的 NodeJS 服务器。您也可以在 Nginx 中使用上游指令。
您也必须在非 https 设置中执行此操作,因为 nodeJS 不应侦听默认的 80 端口,因为它是系统端口,并且 nodeJS 不允许您启动该进程除非你 运行 作为 sudo(再次不推荐)。
下面是我在 nodejs 中用于 HTTPS 的代码,
var app = require('express')();
var https = require('https');
var fs = require('fs');
var PORT = 443;
var options = {
key: fs.readFileSync('XYZ.key'),
cert: fs.readFileSync('ABC.crt')
};
var server = https.createServer(options, app).listen(PORT, function () {
console.log("Express listening on port " + PORT);
});
// Post request.
var req_res = function (req, res) {
console.log("[200] " + req.url);
var fullBody = '';
// Read post data.
req.on('data', function (chunk) {
fullBody += chunk.toString();
if (fullBody.length > 1e6) {
// FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
req.connection.destroy();
}
});
// Send response.
req.on('end', function () {
// empty 200 OK response for now
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end(JSON.stringify({
'success': true
}));
});
};
// Hello World
app.get('/*', function (req, res) {
res.status(200).send('Hello World...');
});
// Post request to receive notifications.
app.post('/post', req_res);
关于google计算引擎,您只需要从防火墙启用443端口即可。
gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443 --format json
我想 运行 nodejs & socket.io 服务器在 google 计算引擎中使用 https / SSL。
我从 https://cloud.google.com/compute/docs/load-balancing/http/ssl-certificates 安装了自签名证书。
现在,如何让nodejs服务器使用https协议?
谢谢,
您需要做很多事情来配置 nodeJS 服务器以使用 HTTPs。我建议 Nginx (http://nginx.org/en/docs/http/configuring_https_servers.html) 设置 https 端口 443 连接以在 nginx 层终止。然后使用 Nginx 中的 proxy_pass 指令将所有这些连接代理到您的 NodeJS 服务器。您也可以在 Nginx 中使用上游指令。
您也必须在非 https 设置中执行此操作,因为 nodeJS 不应侦听默认的 80 端口,因为它是系统端口,并且 nodeJS 不允许您启动该进程除非你 运行 作为 sudo(再次不推荐)。
下面是我在 nodejs 中用于 HTTPS 的代码,
var app = require('express')();
var https = require('https');
var fs = require('fs');
var PORT = 443;
var options = {
key: fs.readFileSync('XYZ.key'),
cert: fs.readFileSync('ABC.crt')
};
var server = https.createServer(options, app).listen(PORT, function () {
console.log("Express listening on port " + PORT);
});
// Post request.
var req_res = function (req, res) {
console.log("[200] " + req.url);
var fullBody = '';
// Read post data.
req.on('data', function (chunk) {
fullBody += chunk.toString();
if (fullBody.length > 1e6) {
// FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
req.connection.destroy();
}
});
// Send response.
req.on('end', function () {
// empty 200 OK response for now
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end(JSON.stringify({
'success': true
}));
});
};
// Hello World
app.get('/*', function (req, res) {
res.status(200).send('Hello World...');
});
// Post request to receive notifications.
app.post('/post', req_res);
关于google计算引擎,您只需要从防火墙启用443端口即可。
gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443 --format json