我正在尝试使用 SSL 在 nginx 中设置默认服务器,SSL 证书的路径应包含站点名称,类似的内容
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate ssl/$host_name/fullchain.pem;
ssl_certificate_key ssl/$host_name/privkey.pem;
Run Code Online (Sandbox Code Playgroud)
它不起作用 - 在错误日志中
cannot load certificate "/etc/nginx/ssl//fullchain.pem"
Run Code Online (Sandbox Code Playgroud)
如果我在标题中打印此变量,add_header XX "$http_host";
它会显示正确的站点名称。有没有办法在证书路径中使用站点名称?我的服务器上有很多具有典型配置的站点,因此对我来说最好只有一个配置。Nginx 版本 1.18,如果我手动定义一些变量并将其放入ssl_certificate参数中,一切正常
您需要使用$ssl_server_name而不是$host_nameor $host- 请参阅文档中的示例。你看,在客户端发送 HTTP 请求之前需要证书,所以当时$host_name和 都$host没有定义。
但正如那些文档所说,
请注意,使用变量意味着每次 SSL 握手都会加载证书,这可能会对性能产生负面影响。
因此,最好为所有服务器(使用某种模板)生成具有固定服务器名称(和固定证书路径)的配置文件。
| 归档时间: |
|
| 查看次数: |
1867 次 |
| 最近记录: |