我有nodejs表示坐在nginx后面。目前一切正常。我使用SSL实现了Nginx以使用https,然后只需将请求转发到指定端口上的运行节点应用程序。我想知道这是不是最好的方法吗?这就是我现在所拥有的......
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mysite.somethingelse.com www.mysite.somethingelse.*;
ssl_certificate /path/to/my/cert.pem;
ssl_certificate_key /path/to/my/key.key;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
如果我只是在快递端实施https服务器怎么办?然后将请求代理到那个,并让它做所有的解码?像这样:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name mysite.somethingelse.com www.mysite.somethingelse.*;
location / {
proxy_pass https://localhost:3000;
proxy_http_version 1.1;
proxy_cert path/to/cert.pem
proxy_key path/to/key.key
}
}
第二个版本可能甚至不正确。但我想要的是在节点应用程序上实现SSL而不是让nginx这样做。
谢谢!
答案 0 :(得分:0)
如果您正在追求性能并在多个节点实例之间实现负载平衡,那么在独立计算机上终止SSL是一个好主意。但是,如果您要运行节点应用程序的单个实例并且预计负载不高,那么在节点中设置SSL可能更简单。另外我建议你不要使用nginx并切换到NAT(使用防火墙),因为这种方法将使用更少的资源。
支持在nginx上终止SSL的另一个论点是文档和配置最佳实践。您应该知道配置SSL不仅仅是关于设置证书和私钥,还有很多关于不同密码,协议和漏洞的安全注意事项。并且更容易找到nginx的工作解决方案,技巧和配置示例,而不是节点。
关于你的问题: