1. 多域名服务架构的现实需求
现代Web服务部署中,单台服务器承载多个独立域名的业务场景越来越普遍。我最近接手的一个企业级项目就需要在同一组Nginx服务器上部署7个业务域名,每个域名都有独立的SSL证书,并且需要根据访问路径分发到不同的后端服务。这种架构不仅能节省服务器成本,还能简化运维管理,但配置过程确实存在不少技术细节需要注意。
在实际操作中,我发现很多教程只讲基础配置,却忽略了生产环境中的关键细节。比如证书自动续期时的服务重启策略、不同域名间的资源隔离、日志文件管理等问题。本文将基于我处理过的真实案例,分享一套经过实战检验的Nginx多域名配置方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备与规划
2.1 服务器基础配置
建议使用Linux发行版作为操作系统(我常用Ubuntu 20.04 LTS),确保已安装:
- Nginx 1.18+(支持TLS 1.3)
- OpenSSL 1.1.1+
- 系统防火墙配置放行80/443端口
重要提示:生产环境务必禁用HTTP/1.0,建议在nginx.conf的http块中添加:
code复制http { ... server_tokens off; chunked_transfer_encoding on; keepalive_timeout 75s; keepalive_requests 100; }
2.2 域名与证书规划
假设我们需要配置以下三个域名:
- www.example.com - 主站(使用ECC证书)
- api.example.com - 接口服务(使用RSA证书)
- static.example.com - 静态资源(使用通配符证书)
证书存放路径建议采用结构化目录:
code复制/etc/nginx/ssl/
├── example.com/
│ ├── ecc/
│ │ ├── fullchain.pem
│ │ └── privkey.pem
│ └── rsa/
│ ├── fullchain.pem
│ └── privkey.pem
└── wildcard/
├── fullchain.pem
└── privkey.pem
3. 核心配置实现
3.1 主配置文件拆分
最佳实践是将配置拆分为多个文件:
code复制/etc/nginx/
├── nginx.conf
├── conf.d/
│ ├── 00-basic.conf
│ ├── 10-example.com.conf
│ ├── 20-api.example.com.conf
│ └── 30-static.example.com.conf
└── snippets/
├──
