nginx 多域名共享核心参数的推荐做法是将通用配置抽离为独立文件(如 common.conf)并通过 include 在各 server 块中引入,实现结构复用与逻辑分离;共用参数包括连接性能、日志、安全代理头等,而 server_name、root 等需按域名独立配置。

Nginx 实现多个域名共享同一套核心参数,关键不是“复制粘贴”,而是结构复用 + 逻辑分离。最稳妥、可维护性最强的方式是:把共用配置抽成独立文件,在每个 server 块中通过 include 引入。
共享核心参数的推荐做法
- 把通用设置(如日志格式、超时、缓存基础规则、安全头、代理头模板等)写进一个单独的
.conf文件,例如/etc/nginx/conf.d/common.conf - 每个域名对应的
server块里,用include common.conf;加载它 - 这样所有域名自动继承一致的行为,修改一处,全部生效
示例:
# /etc/nginx/conf.d/common.conf client_max_body_size 50M; keepalive_timeout 65; sendfile on; # 统一的日志格式(已定义在 http 块中,此处不重复) access_log /var/log/nginx/access.log main; # 统一的反向代理头(适用于所有后端服务) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
然后在各域名配置中引用:
# /etc/nginx/conf.d/site-a.com.conf
server {
listen 80;
server_name site-a.com www.site-a.com;
include common.conf; # ← 关键:复用
root /var/www/site-a;
index index.html;
}
# /etc/nginx/conf.d/site-b.com.conf
server {
listen 80;
server_name site-b.com www.site-b.com;
include common.conf; # ← 同样复用
root /var/www/site-b;
index index.html;
}
可共享的核心参数类型
-
连接与性能类:
keepalive_timeout、client_max_body_size、sendfile、tcp_nopush -
日志相关:
access_log(路径+格式)、error_log级别(若统一管理) -
安全与代理头:
proxy_set_header系列(尤其Host、X-Forwarded-*) -
基础重写/跳转规则:比如统一强制 HTTPS 跳转逻辑(放在
http块或server块顶部) -
缓存策略模板:
proxy_cache_valid、proxy_cache_use_stale等(但具体缓存键仍需按域名微调)
注意事项
- 不要直接在
http块里写proxy_set_header等指令——它们只对当前作用域生效,且可能被server或location块覆盖;必须放在server或location内才可靠透传 -
server_name、root、location路径这些必须按域名独立配置,不能共享 - 如果用了
upstream,多个server块可以共用同一个 upstream 名称,无需重复定义
这样配置后,运维只需维护一份 common.conf,新增域名时只写最小化 server 块,既清晰又防出错。











