gpt4 book ai didi

ssl - 在 heroku 上使用 https

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:04 26 4
gpt4 key购买 nike

我正在尝试让我的应用程序在 heroku 上成为“无处不在的 https”。到目前为止,应用程序是这样的:

"use strict";

console.log('working');

//Initial setup
var path, https, privateKey, certificate, port, cdjshelp, util, cookies, oauth, twitter, crypto, _, options, express, auth, lodash, dust, dustjs,
dustjsHelpers, commonDustjsHelpers, app, db, fs, mongoose, mongooseTimes, Comment, Bird, Sighting, Site, User,
Backbone, io;

//node modules, express and dust declarations
path = require('path');
util = require('util');
fs = require('fs');
https = require('https');
privateKey = fs.readFileSync('./config/privatekey.pem').toString();
certificate = fs.readFileSync('./config/certificate.pem').toString();
crypto = require('crypto');

//APP Defn...
app = require('./config/appSetup')(dustjs);

//******** SERVER CONFIG **********//
var port = process.env['PORT'] = process.env.PORT || 4000; // Used by https on localhost

options = {
key: privateKey,
cert: certificate
}

https.createServer(options, app).listen(port, function() {
console.log("Express server listening with https on port %d in %s mode", this.address().port, app.settings.env);
});

我使用 openSSL CLI 生成了一个 privatekey.pem 和一个 certificate.pem 并将它们作为选项加载。

我知道如果您使用 DNS 记录让应用服务于您自己的域,heroku 有一个过程。我知道您必须完成列出的程序 here .我没有重新映射任何 URL 或更改任何记录 - 我的 URL 是 birdsapp.heroku.com。

Heroku 使用 piggyback SSL,所以如果你设置了一个 http 服务器,你的应用程序将响应 https 请求而无需任何额外的配置。那里的问题是 http 路由仍然可用,所以我坚持只设置 https 服务器 - 但它超时,日志中没有任何内容,所以我认为 SSL 设置有问题。

以上设置是否正确?这是在 heroku 上执行基本 https 服务器的最佳方式吗?

最佳答案

好吧,其实比那简单多了...

您只需创建一个 http 服务器:

//******** SERVER CONFIG **********//
var port = process.env['PORT'] = process.env.PORT || 4000;

http.createServer(app).listen(port, function() {
console.log("Express server listening with http on port %d in %s mode", this.address().port, app.settings.env);
});

并添加路由重定向:

app.all('*', function(req, res, next) {
if (req.headers['x-forwarded-proto'] != 'https')
res.redirect('https://' + req.headers.host + req.url)
else
next() /* Continue to other routes if we're not redirecting */
});

heroku 负责其余的工作,设置一个 http 服务器,它是您的 http 服务器的镜像并使用它们的证书等。

关于ssl - 在 heroku 上使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com