2013-07-13 5 views
9

Я настроил свой SSL-терминал, и я могу подтвердить, что он работает. Когда я иду в мой журнал, я вижу следующее:HTTPS Node.js приложение на Heroku

Jul 13 08:14:10 support-dash app/web.1: Express server listening on port 17621 
Jul 13 08:14:10 support-dash heroku/web.1: Stopping all processes with SIGTERM 
Jul 13 08:14:11 support-dash heroku/web.1: State changed from starting to up 
Jul 13 08:14:13 support-dash heroku/web.1: Process exited with status 143 
Jul 13 08:15:48 support-dash heroku/router: at=error code=H12 desc="Request timeout" method=GET path=/ host=app.supportdash.com fwd="68.63.87.85" dyno=web.1 connect=2ms service=30000ms status=503 bytes=0 
Jul 13 08:16:18 support-dash heroku/router: at=error code=H12 desc="Request timeout" method=GET path=/favicon.ico host=app.supportdash.com fwd="68.63.87.85" dyno=web.1 connect=2ms service=30007ms status=503 bytes=0 

Я пытался разыскать какую-то информацию о коде выхода 143, и почему останавливает все процессы. Проверьте следующий файл сервера:

var http = require('http'); 
var https = require('https'); 
var fs = require('fs'); 
var express = require("express"); 

var app = express(); 

app.set('port', process.env.PORT || 3000); 
app.use(express.logger()); 

app.get('/', function(request, response) { 
    response.send('Hello World 2!'); 
}); 

var privateKey = fs.readFileSync(__dirname + '/ssl/server.key').toString(); 
var certificate = fs.readFileSync(__dirname + '/ssl/gandiSSL.pem').toString(); 

var options = { 
    key: privateKey, 
    cert: certificate 
}; 

https.createServer(options, app).listen(process.env.PORT, function() { 
    console.log("Express server listening on port " + app.get('port')); 
}); 

Спасибо за ваш отзыв. При необходимости я могу предоставить более подробную информацию.

------ РЕШЕНИЕ (EDIT) -------

Смотрите мой ответ ниже.

+1

Эй, Эндрю, я знаю, что это очень долго после факта, но вы должны отправить решение как ответ самостоятельно и пометить его как принятый! –

ответ

7

Я нашел ответ здесь: Heroku Error H13 on ExpressJS Node HTTPS Server

«терминации SSL происходит при балансировки нагрузки Heroku в, они посылают ваше приложение простой (без SSL) трафика, так что ваше приложение должно создать не-HTTPS сервер.»

Затем я изменил мой файл:

var http = require('http'); 
var express = require("express"); 

var app = express(); 

app.set('port', process.env.PORT || 3000); 
app.use(express.logger()); 

app.get('/', function(request, response) { 
    console.log('[support dash] processing get request') 
    response.send('Hello World 2!'); 
}); 

app.listen(process.env.PORT, function() { 
    console.log('***** exp listening on port: ' + process.env.PORT); 
}); 

Все работает большой NO над HTTPS. Удачи!

+0

странно, поэтому, когда я настраиваю SSL, ничего не нужно делать с кодом NodeJS? как установить сертификаты? –

+1

Это была другая запутанная часть. Сертификаты предоставляются через Heroku, а не для вашего провайдера доменных имен (которые также попытаются продать вам сертификаты). – AndrewJM

+0

ой, так мне не нужно их покупать? –