1. 为什么需要多域名多证书配置
在Web服务部署的实践中,我经常遇到这样的场景:一台服务器需要同时承载多个独立域名的访问请求,每个域名都有独立的SSL证书需求,背后可能对应着完全不同的业务系统。比如公司官网、电商平台、客户管理系统可能都需要部署在同一台物理服务器上。
传统做法是为每个服务单独配置一台服务器,但这会造成硬件资源的严重浪费。Nginx作为高性能的反向代理服务器,其虚拟主机功能可以完美解决这个问题。通过server_name指令区分不同域名,配合SNI(Server Name Indication)技术,我们可以在单台服务器上实现:
- 不同域名使用不同SSL证书
- 不同域名指向不同的后端服务
- 统一管理所有服务的HTTP/HTTPS流量
- 灵活配置各服务的缓存策略、访问控制等参数
提示:SNI是TLS的扩展协议,允许客户端在握手阶段就告知服务器要访问的域名,这是实现单IP多证书的关键技术。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 Nginx版本选择
要实现完整的多证书支持,建议使用Nginx 1.15.0及以上版本。可以通过以下命令检查当前版本:
bash复制nginx -v
如果版本过低,可以通过官方源升级:
bash复制# Ubuntu/Debian
sudo apt update && sudo apt install --only-upgrade nginx
# CentOS/RHEL
sudo yum update nginx
2.2 证书文件准备
为每个域名准备完整的证书链文件,通常包括:
- 域名证书(如domain.crt)
- 中间证书(如intermediate.crt)
- 私钥文件(如domain.key)
建议将证书文件按域名分类存放:
code复制/etc/ssl/certs/
├── domain1/
│ ├── fullchain.pem
│ └── privkey.pem
├── domain2/
│ ├── fullchain.pem
│ └── privkey.pem
注意:私钥文件权限应设置为600,避免安全风险:
bash复制chmod 600 /etc/ssl/certs/*/privkey.pem
