应用场景
作为第三方站点服务供应商,我们需要每天对接大量的第三方域名及其ssl证书,如果我们为每个客户的域名配置一个server block的话,可能会造成大量的配置冗余,并面临批量更新的问题。实践中,最理想的对接方式是:客户只需要将他们的域名证书公私钥提供给第三方供应商,并将改域名解析到第三方站点服务供应商的网关外网ip即可完成站点对接服务。为了方便网关管理各种第三方域名对接,我们可以通过nginx的default_server来支持ssl域名的动态转发。
具体需求描述
有个客户域名为example.guest.com,解析到第三方供应商的网关外网ip,第三方网关根据客户域名,查询并设置该域名的公私钥,并代理到后端预先给客户定制(每个客户需要配置不同的主题色和logo)的站点域名test-123.domain.com。
网关配置
我方网关代理配置:
server {
listen 443 default_server ssl;
server_name _;
ssl_certificate ssl/domain.com.pem;
ssl_certificate_key ssl/domain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;
ssl_prefer_server_ciphers on;
ssl_certificate_by_lua_file 'conf/dyn