文档中心
Nginx澶氬煙鍚峉SL璇佷功閰嶇疆鎸囧崡涓€缃戞墦灏紿TTPS瀹夊叏閮ㄧ讲
时间 : 2025-09-27 16:26:41浏览量 : 2

在今天的互联网环境中,HTTPS早已成为网站安全的标配。无论是保护用户隐私,还是提升搜索引擎排名,SSL证书都不可或缺。但对于拥有多个域名的站长或运维人员来说,如何高效地为Nginx配置多域名SSL证书,可能是个头疼的问题。本文将用通俗易懂的语言,结合实例,带你一步步搞定Nginx多域名SSL证书的配置。
一、为什么需要多域名SSL证书?
假设你运营一个电商平台,主站是 `shop.com`,还有博客 `blog.shop.com` 和会员中心 `user.shop.com`。如果每个子域名单独申请证书:
1. 管理麻烦:需要多次申请、续费、部署。
2. 成本高:单域名证书按数量收费(比如Let's Encrypt虽免费但有速率限制)。
而多域名SSL证书(如SAN证书或通配符证书)可以一张证书覆盖多个域名,比如:
- SAN证书:同时保护 `shop.com`、`blog.shop.com`、`api.shop.com`。
- 通配符证书:保护 `*.shop.com` 的所有子域名。
> 举例:腾讯云的“多域名DV SSL证书”支持绑定10个域名,适合中小型业务场景。
二、Nginx配置多域名SSL的两种方案
方案1:单服务器配置多个独立SSL证书
适用场景:不同域名对应完全独立的业务(如 `a.com` 和 `b.com`)。
```nginx
server {
listen 443 ssl;
server_name a.com;
ssl_certificate /path/to/a.com.crt;
ssl_certificate_key /path/to/a.com.key;
其他配置...
}
server_name b.com;
ssl_certificate /path/to/b.com.crt;
ssl_certificate_key /path/to/b.com.key;
```
方案2:单服务器共用多域名SAN证书
适用场景:多个关联域名(如主站+子域名)。
server_name shop.com blog.shop.com;
同一张证书覆盖所有域名
ssl_certificate /path/to/multi_domain.crt;
ssl_certificate_key /path/to/multi_domain.key;
根据访问的域名返回不同内容
location / {
if ($host = "blog.shop.com") {
proxy_pass http://blog_backend;
}
if ($host = "shop.com") {
proxy_pass http://main_site;
}
> 注意:SAN证书需提前将所有域名写入CSR(Certificate Signing Request),后续新增需重新签发。
三、实战案例:通配符证书 + Nginx配置
假设你有一个通配符证书 `*.shop.com`,想同时保护以下站点:
- `www.shop.com`
- `api.shop.com`
server_name www.shop.com;
ssl_certificate /path/to/wildcard.crt;
ssl_certificate_key /path/to/wildcard.key;
root /var/www/main_site;
server_name api.shop.com;
复用同一张通配符证书
ssl_certificate /path/to/wildcard.crt;
ssl_certificate_key /path/to/wildcard.key;
location / {
proxy_pass http://api_backend;
}
四、常见问题与优化技巧
1. HTTP/2支持:在Nginx中启用HTTP/2能显著提升性能:
```nginx
listen 443 ssl http2;
```
2. OCSP装订(OCSP Stapling):减少客户端验证证书吊销状态的延迟:
ssl_stapling on;
ssl_stapling_verify on;
3. 兼容性问题:
- Android 4.x等旧设备可能不支持SNI(Server Name Indication),需额外监听默认IP的443端口并配置默认证书。
五、
通过合理选择多域名SSL方案(独立/SAN/通配符),配合Nginx的灵活配置,可以轻松实现多个域名的HTTPS加密。关键步骤包括:
1. 选对证书类型(根据业务需求决定)。
2. 正确编写Nginx配置块(区分不同域名的逻辑)。
3. 定期检查续期(避免因过期导致服务中断)。
> 小贴士: Let's Encrypt的ACME工具(如Certbot)可自动化SAN/通配符证书申请和续期命令示例:
> ```bash
> certbot certonly --nginx -d shop.com -d blog.shop.com -d api.shop.coom
> ```
现在就去试试吧!让你的所有站点都穿上“加密盔甲”,安全又省心!
TAG:nginx多域名ssl证书,nginx 多证书,nginx ssl pem,nginx多证书配置