将NGINX配置为反向代理(分派)到已配置SSL的后端服务
我有一个物理服务器和一个将NGINX配置为反向代理(分派)到已配置SSL的后端服务,ssl,nginx,nginx-reverse-proxy,Ssl,Nginx,Nginx Reverse Proxy,我有一个物理服务器和一个IP地址。在该服务器上,我配置了三个(数量3)后端服务,每个都有自己的公共DNS域名,每个都有自己的让我们加密SSL证书,如图所示: - svc01.example.com:1443 # Own DNS domain-name and SSL certificates. - svc02.example.com:2443 # Own DNS domain-name and SSL certificates. - svc03.example.com:3443 #
IP地址
。在该服务器上,我配置了三个(数量3)后端服务,每个都有自己的公共DNS域名,每个都有自己的让我们加密SSL证书
,如图所示:
- svc01.example.com:1443 # Own DNS domain-name and SSL certificates.
- svc02.example.com:2443 # Own DNS domain-name and SSL certificates.
- svc03.example.com:3443 # Own DNS domain-name and SSL certificates.
它们共存于同一物理服务器上,因此每个都配置为使用自己的端口
;但是,svc01 | 02 | 03.example.com的公共IP地址
是相同的
请记住,这些后端服务已经配置了SSL(我无法撤消),如何配置NGINX
来实现以下简单转发(几乎像一个调度器):
遗憾的是,我不是一个NGINX
人,因此非常感谢为每个人提供完整的配置文件:
- svc01_nginx.conf
- svc02_nginx.conf
- scv03_nginx.conf
提前谢谢你 感谢@SteffenUllrich在上面的评论中提供的提示,解决方案如下所示。我不是一个
nginx
的家伙,我不确定是否有其他最佳实践可以使此配置更安全或更健壮(免费评论),但这只是一个开始
/etc/nginx/nginx.conf
:
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
events {}
stream {
map $ssl_preread_server_name $targetBackend {
svc01.example.com svc01.example.com:1443
svc02.example.com svc02.example.com:2443
svc03.example.com svc03.example.com:3443
}
server {
listen 8443;
# ==============================================================
# http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
# ==============================================================
proxy_connect_timeout 10s;
proxy_timeout 600s;
resolver 8.8.8.8 1.1.1.1 8.8.4.4 1.0.0.1;
proxy_pass $targetBackend;
# ==============================================================
# ==============================================================
# http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html
# ==============================================================
ssl_preread on;
# ==============================================================
}
}
我希望这能帮助别人。(◠﹏◠) 请参阅@SteffenUllrich谢谢!我看了一眼,它看起来就像我需要的一样。@SteffenUllrich仅供参考:如果您使用我问题中的服务器名称和场景编写了一个完整的(可剪切粘贴)答案,我将期待对其进行投票,并可能选择它作为答案。谢谢。很高兴能给你正确的提示。但是根据我给你的提示,你可以自己回答这个问题。
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
events {}
stream {
map $ssl_preread_server_name $targetBackend {
svc01.example.com svc01.example.com:1443
svc02.example.com svc02.example.com:2443
svc03.example.com svc03.example.com:3443
}
server {
listen 8443;
# ==============================================================
# http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
# ==============================================================
proxy_connect_timeout 10s;
proxy_timeout 600s;
resolver 8.8.8.8 1.1.1.1 8.8.4.4 1.0.0.1;
proxy_pass $targetBackend;
# ==============================================================
# ==============================================================
# http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html
# ==============================================================
ssl_preread on;
# ==============================================================
}
}