如何解决当域中有 www 时,Nginx 动态 ssl 不起作用
下面的代码在 example.com 上运行良好,但对于 www.example.com 失败,因为 $ssl_server_name 变为 www.example.com 并且它尝试搜索具有该名称的证书。正确的证书位置是 /home/certs/example.com 。
有没有其他办法解决这个问题?
服务器{
server_name _;
listen 443 ssl http2 default_server;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /home/certs/$ssl_server_name.crt;
ssl_certificate_key /home/certs/$ssl_server_name.key;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
add_header Strict-Transport-Security "max-age=31536000" always;
location /robots.txt {
root /home/dist/common;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_set_header X-Forwarded-Referrer $http_referer;
set $delimeter "";
if ($is_args) {
set $delimeter "&";
}
set $args $args${delimeter}from=$ssl_server_name;
proxy_pass http://127.0.0.1:8081$uri$is_args$args;
}
}
解决方法
找到我的答案。您需要使用地图。
map $ssl_server_name $mapped_name {
default $ssl_server_name;
~*www.(.*) $1;
}
server {
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。