2017-01-23 3 views
2

Я использую Nginx для публикации статического содержимого на порту 80 и переадресации 433 (с SSL) в NodeJS. Конфигурации Nginx выглядит следующим образом:Настройка HTTPS на Nginx и NodeJS

server { 
    listen 443 ssl; 

    ssl_certificate /opt/projetos/nodejs-project-ssl/vectortowns-cert.pem; 
    ssl_certificate_key /opt/projetos/nodejs-project-ssl/vectortowns-key.pem; 
    ssl_protocols  SSLv3 TLSv1; 
    ssl_ciphers HIGH:!aNULL:!MD5; 

    server_name 127.0.0.1:443; 

    location/{ 
      proxy_pass https://127.0.0.1:8443; 
      proxy_redirect off; 
      proxy_set_header Host $host ; 
      proxy_set_header X-Real-IP $remote_addr ; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; 
      proxy_set_header X-Forwarded-Proto https; 
    } 

}

С NodeJS, Express, и EJS, я публикую динамический контент к порту 8443, а также настроена на использование HTTPS. Смотрите javascript-код ниже (только те части, которые важны для вопроса).

// other codes... 
/* Enable https */ 
var privateKey = fs.readFileSync('/opt/projetos/nodejs-project-ssl/vectortowns-key.pem'); 
var certificate = fs.readFileSync('/opt/projetos/nodejs-project-ssl/vectortowns-cert.pem'); 
var credentials = { 
    key: privateKey, 
    cert: certificate 
}; 
// other codes... 
/* Controllers */ 
app.use(require('./controllers')); 
https.createServer(credentials, app).listen(
    configuration.server.port, 
    configuration.server.address, 
    function(){ 
     logger.info('Server started: ' + configuration.server.address + ':' + configuration.server.port); 
}); 

Мои вопросы:

  1. Мне нужно установить сертификат SSL и ключ в Nginx и NodeJS или просто в одном из них?
  2. Если мне нужен только один, какой был бы лучший вариант (NodeJS или Nginx)?

спасибо !!

ответ

7

Используйте Nginx (и только Nginx) для SSL, это стандарт. По мере того как вы устанавливаете, Nginx работает как обратный прокси, поэтому он будет кормить вашу программу локальными незашифрованными данными для данных зашифрованных данных на порте 443, поэтому он не будет работать, если вы также используете SSL в своей программе на узле

+0

Спасибо, Я делал это неправильно. Сейчас я отрегулирую :) – lgapontes

Смежные вопросы