Let's Encrypt的通配符证书当然香,但要90天延期,再就是浏览器兼容性么,还差点。
许多服务商都提供免费的SSL证书,但缺点是只能单域名或者单子域名,比如tingtao.org和www.tingtao.org就需要做两个证书。
这样一来有点尴尬的是,要么Nginx里面设置两个站点,要么其中一个做转发,有点麻烦。
我搜了一圈找到了合理的方法,试用挺久了,很爽。
配置很简单,先看相关的配置内容:
server_name tingtao.org www.tingtao.org ; listen 443 ssl; listen [::]:443 ssl; ssl_certificate /var/www/ca/${ssl_server_name}/Nginx/1_${ssl_server_name}_bundle.crt ; ssl_certificate_key /var/www/ca/${ssl_server_name}/Nginx/2_${ssl_server_name}.key ;
没错,只需要改动下面的两行就行,解释一下:
配置文件里用${ssl_server_name}来代替对应的“主机名”,这个主机名是浏览器提交给web服务器的,在这里也就是nginx。
比如我两个证书的根目录分别为
/var/www/ca/tingtao.org/Nginx/
/var/www/ca/www.tingtao.org/Nginx/
因为是在同一服务商做的证书,所以文件结构是相同的,那么如此这般配置,就可以让不同域名的SSL证书服务于同一个站点,而不用做成多个站点+多开php-fpm进程,挺爽的。
当然,如果你证书的文件名跟我的不同,对应调整即可。