我在一台使用 nginx 的服务器上有多个 ssl 站点,虚拟主机的工作方式如下:
root /var/www/html/$host;
但在证书部分,该$host
变量不起作用:
ssl_certificate /etc/nginx/ssl/$host.crt;
ssl_certificate_key /etc/nginx/ssl/$host.key;
我该如何解决这个问题?
答案1
我怀疑ssl_certificate
它是否可以参数化——它在nginx
启动时被解析,因此该过程必须知道它的文件名才能执行 OpenSSL 初始化过程,但是在参数化的 vhosts 的情况下这是不可能的——server_name
尚不清楚。
您必须为 SSL 创建非参数化的 vhost 配置文件,或者使用通配符证书(例如*.foo.bar)和半参数化的 vhosts,例如server_name *.foo.bar;
。