nginx多站点配置

Nginx 多站点配置的核心思路是通过“端口区分”或“域名区分”建立独立的 server 块,并配合日志、权限、SSL 的隔离,实现一台服务器高效承载多个网站。 相比 Apache,Nginx 采用事件驱动架构,配置多站点时资源占用更低、并发能力更强,但若未遵循规范配置,容易出现配置混乱、权限越界、性能下降等问题,本文将从基础原理到生产级实践,给出可直接落地的解决方案。


理解 Nginx 多站点的运行逻辑

Nginx 本身不区分“站点”,它只处理 server 块,每个 server 块定义了一组监听端口和主机名匹配规则,当请求到达时,Nginx 根据 listen 和 server_name 将请求路由到对应配置。

关键结论:多站点配置的本质是创建多个独立的 server 块,并确保每个站点的根目录、日志、进程权限互相隔离。


标准配置方案(基于域名)

最常用的方式是基于不同域名或子域名区分站点,假设服务器 IP 为 2.3.4,有两个站点:example.com 和 blog.example.com。

创建站点目录与文件

mkdir -p /var/www/example.com/html
mkdir -p /var/www/blog.example.com/html
echo "Welcome to example.com" > /var/www/example.com/html/index.html
echo "Welcome to blog" > /var/www/blog.example.com/html/index.html

在 /etc/nginx/conf.d/ 下创建独立配置文件

建议每个站点一个 .conf 文件,便于维护。example.com.conf:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html;
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
    location / {
        try_files $uri $uri/ =404;
    }
}

nginx多站点配置

blog.example.com.conf 同理,只需修改域名、目录和日志路径。

检查配置并重载

nginx -t
systemctl reload nginx

重点:每个 server 块必须使用独立的 root 和日志文件,否则多站点间会互相干扰,且排查问题时难以定位。


基于不同端口的配置场景

当服务器只有一个公网 IP,但需要同时运行 HTTP 和 HTTPS 或临时测试环境时,可用不同端口区分,例如站点 A 用 8080,站点 B 用 8081。

server {
    listen 8080;
    server_name _;
    root /var/www/site-a;
    # 其他配置
}
server {
    listen 8081;
    server_name _;
    root /var/www/site-b;
    # 其他配置
}

注意:使用端口区分时,servername 通常设为 `` 匹配任意域名,但这种方式对用户不友好,生产环境建议优先使用域名区分,并配合防火墙限制非标准端口的访问。


多站点的性能与安全优化

启用 Gzip 与缓存

在 http 块或 server 块中加入:

gzip on;
gzip_types text/plain text/css application/json application/javascript;
location ~ .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

配置静态文件分离

若站点有大量静态资源,可单独设置 location 指向独立目录,减少 PHP 或后端处理压力:

location /static/ {
    alias /var/www/example.com/static/;
    access_log off;
    expires 7d;
}

限制访问与防盗链

location ~ .(gif|jpg|png)$ {
    valid_referers none blocked .example.com;
    if ($invalid_referer) {
        return 403;
    }
}

nginx多站点配置

使用 Unix Socket 连接 PHP-FPM

多个站点共用 PHP-FPM 时,建议为每个站点创建独立的 Socket,避免资源争抢:

location ~ .php$ {
    fastcgi_pass unix:/var/run/php/php8.2-site-a.sock;
    include fastcgi_params;
}

酷番云实战经验案例

场景: 在酷番云一台 2核4G 的云服务器上,客户需要同时运行企业官网、商城和 API 服务,使用默认配置后,发现商城流量高峰时,官网响应变慢。

问题分析: 三个站点共用同一 PHP-FPM 池,导致进程互相抢占 CPU 和内存。

解决方案:

  • 在酷番云控制台对服务器进行 内网带宽升级,并开启 CPU 弹性伸缩,确保峰值时资源充足。
  • 为每个站点创建独立的 PHP-FPM 池,并设置不同的 listen 端口(如 9001、9002、9003),在 Nginx 的 location ~ .php$ 中分别指向对应端口。
  • 为 API 服务单独启用 keepalive 和 fastcgi_cache,显著降低响应时间。

效果: 调整后商城高峰期官网响应时间从 800ms 降至 200ms,API 服务吞吐量提升 3 倍。关键经验:多站点配置不仅是 Nginx 层面的隔离,更需结合底层资源(CPU、内存、带宽)做整体规划。 酷番云的云服务器支持按需升级和弹性伸缩,能快速匹配多站点业务增长需求。


常见错误与排查思路

  • 所有站点共用同一个 error_log → 日志混杂,难以定位问题,务必为每个站点设置独立日志。
  • root 路径后多加斜杠 → 导致路径拼接错误。root /var/www/example.com/html; 是正确的,若写成 root /var/www/example.com/html/;

    nginx多站点配置

    在某些场景会出错。

  • 修改配置后未执行 nginx -t 直接 reload → 语法错误会中断服务,每次修改后必须先测试。
  • 站点目录权限过大 → 将目录设为 www-data:www-data 并限制为 755,避免其他用户读取敏感文件。

排查命令速查:

nginx -t                 # 检查语法
tail -f /var/log/nginx/error.log   # 查看错误日志
ss -lntp | grep nginx    # 查看监听端口
curl -H "Host: example.com" http://127.0.0.1   # 模拟请求

相关问答

问 1:多个站点共用 80 端口时,Nginx 如何区分请求?
答:Nginx 会根据 HTTP 请求头中的 Host 字段与 server 块中的 server_name 进行匹配,如果请求的域名没有对应配置,则会使用默认 server(通常是第一个加载的或标记为 default_server 的块),建议将默认 server 配置为返回 404 或跳转到主站,避免被恶意解析。

问 2:如何实现一个站点使用 HTTPS,另一个仅使用 HTTP?
答:为 HTTPS 站点配置 SSL 证书,并在其 server 块中 listen 443 ssl;,同时可添加一个 listen 80; 的 server 块用于强制跳转到 HTTPS,HTTP 站点则仅保留 listen 80;,需要确保两个站点的 server_name 不重叠,并正确设置证书路径。


结语与互动

多站点配置是 Nginx 运维的基石,掌握它不仅能节省服务器成本,还能提升资源利用率。建议从最小的两个站点配置开始实践,逐步加入日志、缓存、SSL 等进阶特性。 如果在配置过程中遇到任何问题,欢迎在评论区留言,我会为你提供一对一的排查思路,也可以分享你常用的多站点配置技巧,我们一起交流进步。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/728558.html

赞 (0)
上一篇 2026年8月27日 02:16
下一篇 2026年8月27日 02:16

相关推荐

  • 安全的舆情监测价格多少?热情服务是否包含售后?

    在当今数字化时代,互联网已成为信息传播的主要渠道,舆情监测作为企业管理、品牌维护和风险防控的重要工具,其需求日益凸显,企业在选择舆情监测服务时,往往面临“安全”与“价格”的双重考量,同时渴望获得“热情服务”以保障使用体验,本文将围绕这三个核心要素,深入探讨如何选择优质的舆情监测服务,助力企业实现信息价值的最大化……

    2025年10月19日
    04110
  • ArcGIS运行需要什么电脑配置?如何选择合适硬件?

    {arcgis电脑配置}ArcGIS作为专业的地理信息系统(GIS)软件,广泛应用于测绘、城市规划、资源管理、环境监测等领域,其运行效率与电脑硬件配置密切相关,合理的配置不仅能提升数据处理速度,还能保证复杂分析任务的稳定性,以下是针对ArcGIS的详细硬件配置建议,结合专业经验与实际应用场景,助力用户构建高效工……

    2026年1月16日
    08520
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 什么是diyp配置?,diyp配置怎么设置

    合理的DIYP配置能够帮助用户在不牺牲性能的前提下,精准控制成本,并针对特定业务场景进行弹性优化,无论是搭建个人网站、部署应用服务还是运行数据分析任务,一套经过深思熟虑的DIYP方案都能让资源利用率最大化,避免闲置浪费或性能瓶颈,理解DIYP配置的核心要素DIYP配置的本质是根据实际需求,自主选择并组合计算资源……

    2026年7月26日
    01241
  • 金立5005参数配置怎么样?金立5005参数配置值得买吗

    金立5005参数配置定位入门级,续航表现突出金立5005作为一款面向入门市场的智能手机,其参数配置紧紧围绕实用与耐用展开,4000mAh大容量电池是整机最突出的亮点,在同价位产品中堪称续航标杆,配合低功耗处理器,可轻松满足一天半以上的正常使用,屏幕、摄像头、存储等核心部件配置均衡,虽不追求极致性能,但足以应对日……

    2026年8月5日
    01103

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • 树树7876的头像
    树树7876 2026年8月27日 04:48

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是站点部分,给了我很多新的思路。感谢分享这么好的内容!

    • 草草2752的头像
      草草2752 2026年8月27日 04:48

      @树树7876:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是站点部分,给了我很多新的思路。感谢分享这么好的内容!

  • kind422man的头像
    kind422man 2026年8月27日 04:48

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是站点部分,给了我很多新的思路。感谢分享这么好的内容!