将 NGINX 配置为反向代理(以分派)到已配置 SSL 的后端服务
Configuring NGINX as reverse-proxy (to dispatch) to backend services that are already SSL configured
我有一台物理服务器和一台IP address
。在该服务器上,我配置了三个(数量。3)后端服务,每个都有自己的 public DNS 域名,每个都有自己的 Let's Encrypt SSL certificates
,如图:
- 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.
它们共存于同一物理服务器上,因此每个都配置为使用自己的 Port
;然而 public IP-Address
与 svc01|02|03.example.com
是相同的。
请记住,这些后端服务 已经配置了 SSL (而且我无法撤消),我如何配置 NGINX
以实现以下简单的转发(几乎像调度员):
svc01.example.com:443 --> svc01.example.com:1443
svc02.example.com:443 --> svc02.example.com:2443
svc03.example.com:443 --> svc03.example.com:3443
遗憾的是,我不是 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;
# ==============================================================
}
}
我希望这对其他人有帮助。 (◠﹏◠)
我有一台物理服务器和一台IP address
。在该服务器上,我配置了三个(数量。3)后端服务,每个都有自己的 public DNS 域名,每个都有自己的 Let's Encrypt SSL certificates
,如图:
- 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.
它们共存于同一物理服务器上,因此每个都配置为使用自己的 Port
;然而 public IP-Address
与 svc01|02|03.example.com
是相同的。
请记住,这些后端服务 已经配置了 SSL (而且我无法撤消),我如何配置 NGINX
以实现以下简单的转发(几乎像调度员):
svc01.example.com:443 --> svc01.example.com:1443
svc02.example.com:443 --> svc02.example.com:2443
svc03.example.com:443 --> svc03.example.com:3443
遗憾的是,我不是 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;
# ==============================================================
}
}
我希望这对其他人有帮助。 (◠﹏◠)