Node.js Nginx位于443上,但节点处理ssl证书
我们有运行两台服务器的nginx(端口80和443)。这些Node.js Nginx位于443上,但节点处理ssl证书,node.js,ssl,nginx,Node.js,Ssl,Nginx,我们有运行两台服务器的nginx(端口80和443)。这些proxy\u pass我们的上游: upstream app_nodes { ip_hash; server 127.0.0.1:3000; server 127.0.0.1:3001; } upstream app_nodes_https { ip_hash; server 127.0.0.1:8000; server 127.0.0
proxy\u pass
我们的上游:
upstream app_nodes {
ip_hash;
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
upstream app_nodes_https {
ip_hash;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
对于端口80,这很好。然而,对于443,这失败了,因为我们没有在nginx中定义ssl证书。我们需要node.js应用程序(监听端口8000/8001)来处理证书,以动态支持多个域
有没有办法让nginx简单地代理我们的上游服务器并让它们处理ssl
多谢各位
编辑:这是我们的443服务器块
server {
listen 443;
gzip on;
gzip_types text/plain application/json application/ocet-stream;
location / {
proxy_pass https://app_nodes_https;
add_header X-Upstream $upstream_addr;
add_header X-Real-IP $remote_addr;
include /etc/nginx/proxy_params;
}
}
执行
nginx-t
实际上会产生错误,即https协议需要SSL支持
解决方案是使用流:
stream {
upstream https_stream {
hash $remote_addr;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
server {
listen 443;
proxy_pass https_stream;
}
}
这是假设您在8000/8001上运行应用程序实例。因为如果nginx不是SSL端点,您无法查看流量的HTTP部分,因此您需要使用普通TCP进行负载平衡。看,它说TCP是默认的,大概只是
listen443代码>我们使用的是TCP