Я поиграл с приложением nodejs на Heroku и довольно легко настроил HTTPS, используя Автоматическое управление сертификатами Heroku , которое управляет сертификатами, а также добавляет заголовки к входящие запросы, чтобы я мог видеть, пришел ли он через HTTP или HTTPS.
Я столкнулся с некоторыми головными болями, развивающимися локально, поскольку моя локальная машина не добавляла эти заголовки, и логика c, чтобы определить, был ли я локальным, протекала по всему моему приложению. Я закончил тем, что использовал http-proxy lib узла, чтобы обернуть мое приложение при локальном запуске, что работало довольно хорошо даже при добавлении заголовков X, которые использовало мое приложение.
if (IN_DEVELOPMENT) {
const proxiedPort = 9090; // don't hit this directly
startServer(proxiedPort);
const httpProxy = require('http-proxy')
httpProxy.createServer({
target: {
host: 'localhost',
port: proxiedPort
},
ssl: {
key: fs.readFileSync('./dummy/key.pem', 'utf8'),
cert: fs.readFileSync('./dummy/cert.pem', 'utf8')
},
xfwd: true // add X-Forward-* headers as Heroku does
}).listen(EXTERNAL_PORT);
} else {
startServer(EXTERNAL_PORT);
}
После некоторой дополнительной разработки я услышал о команде heroku local , которая запускает вещи локально и подумала, что я полный идиот, чтобы тратить время на настройку прокси, но после некоторого тестируя, я просто запускаю мое приложение, используя Procfile , и мне все еще нужно запустить этот прокси локально.
Есть ли в CLI Heroku встроенный рабочий процесс для обработки HTTPS-прокси?