gpt4 book ai didi

node.js - 是否可以让上游服务器在 Nginx 服务器后面处理 SSL 证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:19 24 4
gpt4 key购买 nike

我有一个 Nginx 服务器处理 http 请求并做代理传递到上游的一些 Node 服务器,如果域名匹配启用的站点之一,所有数据包都被重定向到一个 Node 服务器,只有 channel 是 SSL,否则 301到 https 版本:

server {
listen 80;
server_name something.com
return 301 https://$host$request_uri;
}

server {
listen 433;
server_name something.com;

ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;

ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;

proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
}
}

一切正常,但证书管理、SSL 握手等是由 Nginx 完成的。我希望每个 Node 服务器都在上游管理它们自己的 SSL 首选项,因此我不依赖 Nginx 来执行此操作。我的 Node 服务器已经支持 https 请求,但我不明白是否可以告诉 Nginx:

  • 听 80,如果出现问题,则对它的 https 版本执行 301。
  • 听 433,不用担心 SSL,只需代理将所有内容传递给 localhost:3000

  • 并且监听3000端口的 Node 服务器处理SSL

最佳答案

Listen to 433, don't worry for SSL, just proxy pass everything to localhost:3000

不,不是 nginx,你必须为此使用端口转发。

nginx 要么必须使用一些 SSL key 并可能使用 SSL 将流量代理到某些 Node 应用程序,这将意味着 Node 和 nginx 都必须管理他们自己的 SSL key (nginx 用于客户端-nginx 连接和 Node用于 nginx-nodeApp 连接的应用程序)。

或者 nginx 可以使用不带 SSL 的 HTTP 将请求代理到使用 SSL 的 Node ,这将意味着客户端-nginx 连接不安全,只有 nginx-NodeApp 连接是安全的。这也意味着 https://www.example.com/不会工作 - 尽管 http://www.example.com:443/会的。

如果您希望 Node 处理 SSL key 而不是反向代理(通常这样做),那么您必须在 TCP/IP 级别使用端口转发将流量传递到 Node 应用程序,而无需使用完全没有反向代理 (nginx)。

通常使用反向代理,这样应用程序就不必处理用于客户端连接(以及其他事项)的 SSL key 。如果您希望 Node 应用程序使用 SSL key 而不是反向代理,那么您应该首先重新考虑使用反向代理。

关于node.js - 是否可以让上游服务器在 Nginx 服务器后面处理 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44948527/

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