摘要:Nginx适配多个域名的配置方法1. 基于域名的虚拟主机配置 Nginx通过`server`块实现多域名适配,每个`server`块对应一个域名。核心配置如下: nginx server { listen 80; server_name domain1.com; root /var/www/domain1; } server { ...
Nginx适配多个域名的配置方法
1. 基于域名的虚拟主机配置
Nginx通过`server`块实现多域名适配,每个`server`块对应一个域名。核心配置如下:
nginx
server {
listen 80;
server_name domain1.com;
root /var/www/domain1;
}
server {
listen 80;
server_name domain2.com;
root /var/www/domain2;
}
- `server_name`指定域名,Nginx根据请求的`Host`头匹配对应的虚拟主机。
- 域名主机需在DNS解析中将域名指向服务器IP。
2. SSL/TLS证书配置(HTTPS适配)
若需支持HTTPS,需为每个域名配置独立证书或使用通配符证书:
nginx
server {
listen 443 ssl;
server_name domain1.com;
ssl_certificate /path/to/domain1.crt;
ssl_certificate_key /path/to/domain1.key;
}
3. 域名主机的资源隔离
- 每个域名的`root`目录应独立,避免文件冲突。
- 可通过`location`块为不同域名定制路由规则,例如静态资源缓存、反向代理等。
4. 通配符域名与正则匹配
- `server_name`支持通配符(如`*.example.com`)或正则表达式,实现泛域名解析。
- 示例:
nginx
server_name ~^(www\.)?(?
5. 性能优化与缓存策略
- 为域名主机配置独立的缓存路径(`proxy_cache_path`),提升静态资源加载速度。
- 使用`gzip`压缩减少传输体积,尤其适用于多域名的内容分发。
6. 日志分割与监控
- 每个域名主机的访问日志(`access_log`)应分开存储,便于分析流量来源。
- 示例:
nginx
access_log /var/log/nginx/domain1.access.log;
7. 常见问题与排查
- 域名解析失败:检查DNS配置是否生效,使用`dig`或`nslookup`验证。
- 证书不匹配:确保证书的Common Name(CN)与`server_name`完全一致。
- 端口冲突:避免多个`server`块同一端口但未定义默认主机。
8. 扩展知识:负载均衡与多域名
- 结合`upstream`模块,可将多个域名主机的请求分发至后端服务器集群。
- 示例:
nginx
upstream backend {
server 192.168.1.1;
server 192.168.1.2;
}
server {
server_name domain1.com;
location / {
proxy_pass http://backend;
}
}
9. 动态域名与脚本化配置
- 使用Lua脚本或Nginx API动态添加域名主机,适用于SaaS平台或自动化部署场景。
- 工具如`Certbot`可自动化证书申请与配置。
10. 安全加固建议
- 限制敏感路径访问:
nginx
location /admin {
allow 192.168.1.0/24;
deny all;
}
- 启用HSTS、CSP等头部增强域名主机的安全性。
通过以上配置,Nginx可高效管理多个域名主机,实现资源隔离、性能优化与安全防护。实际部署时需结合业务需求调整参数,并定期审查日志与证书有效期。