Tôi đã cố gắng để thiết lập HTTPS với dự án node.js mà tôi đang làm việc. Về cơ bản, tôi đã làm theo tài liệu của node.js cho ví dụ này:
// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
Bây giờ, khi tôi làm
curl -k https://localhost:8000/
tôi có
hello world
như mong đợi. Nhưng nếu tôi làm
curl -k http://localhost:8000/
tôi có
curl: (52) Empty reply from server
Nhìn lại, điều này có vẻ hiển nhiên là nó sẽ hoạt động theo cách này, nhưng đồng thời, những người cuối cùng ghé thăm dự án của tôi sẽ không nhập https : // yadayada và tôi muốn tất cả lưu lượng truy cập là https từ thời điểm họ truy cập trang web.
Làm cách nào tôi có thể nhận nút (và Express vì đó là khung tôi đang sử dụng) để chuyển tất cả lưu lượng truy cập đến https, bất kể nó có được chỉ định hay không? Tôi đã không thể tìm thấy bất kỳ tài liệu đã giải quyết điều này. Hoặc nó chỉ giả định rằng trong một môi trường sản xuất, nút có một cái gì đó nằm trước nó (ví dụ nginx) xử lý loại chuyển hướng này?
Đây là bước đột phá đầu tiên của tôi vào phát triển web, vì vậy xin vui lòng tha thứ cho sự thiếu hiểu biết của tôi nếu đây là một điều hiển nhiên.