【问题标题】:Is it possible to let upstream servers handle SSL certificates behind an Nginx server?是否可以让上游服务器在 Nginx 服务器后面处理 SSL 证书?
【发布时间】:2017-07-06 12:11:12
【问题描述】:

我有一个 Nginx 服务器处理 http 请求并代理传递到上游的一些节点服务器,如果域名匹配启用的站点之一,所有数据包都重定向到一个节点服务器,只有当通道是 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 完成的。我想让每个节点服务器上游来管理他们自己的 SSL 首选项,所以我不依赖 Nginx 来做到这一点。我的节点服务器已经支持 https 请求,但我不明白是否可以告诉 Nginx:

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

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

【问题讨论】:

标签: node.js ssl nginx https


【解决方案1】:

听 433,不用担心 SSL,只需代理将所有内容传递给 localhost:3000

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

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

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

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

通常使用反向代理,以便应用不必处理用于客户端连接的 SSL 密钥(除其他外)。如果您希望 Node 应用程序使用 SSL 密钥而不是反向代理,那么您应该首先重新考虑使用反向代理。

【讨论】:

  • 其实 nginx 从 1.9.0 版本就可以做到了。见 nginx 流模块。
猜你喜欢
  • 2016-01-01
  • 2019-07-27
  • 2021-03-01
  • 1970-01-01
  • 2020-08-04
  • 2019-02-14
  • 2010-09-09
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多