gpt4 book ai didi

node.js - 使用 ssl 的 nginx 或 Node 应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 00:05:21 25 4
gpt4 key购买 nike

我在 nginx 后面安装了 nodejs express。目前一切正常。我用 SSL 实现了 Nginx 以利用 https,然后将请求转发到指定端口上正在运行的 Node 应用程序。我想知道这是否是最好的方法?这是我目前拥有的...

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;
}
}

如果我简单的在express端实现一个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
}
}

第二个版本可能甚至不正确。但我要做的是在 Node 应用程序上实现 SSL,而不是让 nginx 来做。

  1. 做一个对比另一个对我有什么好处吗?
  2. 这里的最佳实践是什么...让 nginx 或 Node 应用程序执行此操作?
  3. 而且,假设最好在 Node 应用程序上执行此操作,那么此处设置 nginx 的正确实现是什么?

谢谢!

最佳答案

如果您追求性能并打算在多个 Node 实例之间实现负载平衡,那么最好在独立机器上终止 SSL。但是如果你打算运行你的 Node 应用程序的单个实例并且预见到负载不高,那么在 Node 中设置 SSL 可能更简单。此外,我建议您不要使用 nginx 并切换到 NAT(使用防火墙),因为这种方法将使用更少的资源。

支持在 nginx 上终止 SSL 的另一个论点是文档和配置最佳实践。您应该知道配置 SSL 不仅仅是关于设置证书和私钥,它是关于不同密码、协议(protocol)和漏洞的许多安全注意事项。与 node 相比,nginx 更容易找到有效的解决方案、技巧和配置示例。

所以关于你的问题:

  1. 这取决于您的目标。
  2. 这取决于您的目标,但我建议您目前使用 nginx 来终止 SSL。
  3. 在这种情况下,我建议您实现 NAT 而不是 nginx。

关于node.js - 使用 ssl 的 nginx 或 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com