我正在使用Nginx在端口80上发布静态内容,并将433重定向(使用SSL)发布到NodeJS.Nginx的配置如下:
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); });
我的问题是:
我是否需要在Nginx和NodeJS中配置SSL证书和密钥,或者仅在其中一个中配置?
如果我只需要一个,那么最好的选择(NodeJS或Nginx)是什么?
谢谢!!
使用Nginx(和仅Nginx)用于SSL,这是标准.正如您设置的那样,Nginx作为反向代理工作,因此它将为您的程序提供端口443上给定加密数据的本地未加密数据,因此如果您还在节点程序上使用SSL,它将无法工作