2016-02-27 3 views
2

Я настраиваю приложение Node.js с nginx и LetsEncrypt.Node.js Nginx LetsEncrypt Bad Gateway

Я настроил его, но каждый раз, когда я пытаюсь получить к нему доступ, он дает мне ошибку 502 Bad Gateway.

Node.js не показывает ничего, так что я понял, что это даже не обращается приложение, проверил журнал Nginx и засеять это ...

2016/02/27 09:12:11 [error] 15706#0: OCSP_basic_verify() failed (SSL: error:27069076:OCSP routines:OCSP_basic_verify:signer certificate not found) while requesting certificate status, responder: ocsp.int-x1.letsencrypt.org 
2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET/HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl" 
2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET/HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl" 
2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET/HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl" 
2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET/HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl" 

Nginx конфигурации:

upstream app_gamepit { 
     server 127.0.0.1:3000; 
} 

# the nginx server instance 
server { 
    listen 443 ssl; 
    server_name gamepit.nl; 
    access_log /var/log/nginx/gamepit.log; 

    ssl on; 
    gzip on; 

    ssl_certificate /etc/letsencrypt/live/gamepit.nl/cert.pem; 
    ssl_certificate_key /etc/letsencrypt/live/gamepit.nl/privkey.pem; 

    ssl_stapling on; 
    ssl_stapling_verify on; 
    ssl_trusted_certificate /etc/letsencrypt/live/gamepit.nl/fullchain.pem; 

    # pass the request to the node.js server with the correct headers 
    # and much more can be added, see nginx config options 
    location/{ 
     proxy_pass https://app_gamepit/; 
     proxy_redirect off; 
    } 
} 

server { 
    listen 443; 
    server_name www.gamepit.nl; 
    rewrite ^/(.*) https://gamepit.nl/$1 permanent; 
} 

Узел .js приложение (очень мало, так как я тестирую ...)

var fs = require('fs'); 
var https = require('https'); 

var privateKey = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/privkey.pem', 'utf8'); 
var certificate = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/fullchain.pem', 'utf8'); 
var ca = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/chain.pem', 'utf8'); 

var credentials = {key: privateKey, cert: certificate, ca: ca}; 

var app = require('express')(); 

app.use(function(req, res, next) { 
     console.log('site call!', req.originalUrl); 
     next(); 
}); 

app.get('/', function(req, res) { 
     res.send('Hello World'); 
     res.end(); 
}); 

var https = https.createServer(credentials, app); 

https.listen(3000,'127.0.0.1', function() { 
     console.log('running!'); 
}); 
+0

Почему вы кладете ключи как в nginx, так и в узел? – loadaverage

+0

Потому что некоторые уроки мне так говорили: P Я могу проверить, имеет ли значение это сделать или нет, немного задумайтесь. – CreasolDev

+0

Когда я удалил строки о SSL, nginx дал мне ошибку протокола SSL, поэтому NGINX должен знать о сертификатах ssl, а node.js нуждается в них для шифрования, вот что я думаю :) – CreasolDev

ответ

1

Я нашел проблему ... Там я S вопрос о github

вместо

ssl_certificate /etc/letsencrypt/live/domain.com/cert.pem; 

вы должны использовать

ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; 

Я понятия не имею, почему, но теперь он работает.

+0

Потому что он содержит сертификат и цепочку обратно в CA. – Dominik