Nginx多域名站点配置是通过虚拟主机(Server Blocks)实现的,允许单一Nginx服务器托管多个独立域名或子域名,实现资源共享与流量隔离。以下是专业详解及关联扩展:

Nginx通过server指令块匹配不同域名的请求。每个server块定义独立的域名、根目录、日志文件等参数。核心配置步骤:
server {
listen 80;
server_name domain1.com;
root /var/www/domain1;
index index.html;
}
server {
listen 80;
server_name domain2.com;
root /var/www/domain2;
index index.php;
}
以下为多域名服务器的典型应用场景及配置目标:
| 场景类型 | 配置目的 | 关键技术点 |
|---|---|---|
| 反向代理 | 不同域名指向独立后端服务 | proxy_pass指令 |
| 负载均衡 | 域名请求分发至后端集群 | upstream模块 |
| 静态资源托管 | 按域名隔离文件存储路径 | root/alias指令 |
| HTTPS加密 | 为各域名配置独立SSL证书 | SNI技术 |
1. 基础多域名配置:需保证每个server_name唯一匹配域名,避免冲突。
2. SSL证书配置(HTTPS):多域名需配置独立证书或通配符证书:
server {
listen 443 ssl;
server_name domain1.com;
ssl_certificate /path/domain1.crt;
ssl_certificate_key /path/domain1.key;
}
server {
listen 443 ssl;
server_name domain2.com;
ssl_certificate /path/domain2.crt;
ssl_certificate_key /path/domain2.key;
}
3. 通配符与正则匹配:支持动态域名处理:
server_name *.example.com; # 泛域名匹配 server_name ~^(www\.)?(?.+)$; # 正则捕获组
流量隔离: 为高负载域名分配独立日志文件(access_log /error_log)
缓存策略: 按域名设置差异化缓存规则(proxy_cache_key包含$host)
连接复用: 启用HTTP/2协议提升多域名并发效率(listen 443 ssl http2)
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
| 访问返回错误站点 | server块顺序优先级问题 | 首选域名配置置于默认块之前 |
| SSL证书不生效 | SNI支持未启用 | 确保OpenSSL版本≥1.0.1,Nginx≥1.15.9 |
| 重定向循环 | 未分离HTTP/HTTPS配置 | 在80端口配置301跳转至443 |
扩展知识:当处理超大规模多域名(超过1000+)时,建议采用动态配置生成方案,如结合Lua脚本或Nginx Plus的键值存储模块,避免静态配置导致的性能下降。

查看详情

查看详情