nginx多站点配置

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


理解 Nginx 多站点的运行逻辑

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

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


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

最常用的方式是基于不同域名或子域名区分站点,假设服务器 IP 为 2.3.4,有两个站点:example.comblog.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 端口(如 900190029003),在 Nginx 的 location ~ .php$ 中分别指向对应端口。
  • 为 API 服务单独启用 keepalivefastcgi_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

相关推荐

  • vs配置文件怎么打开,vs配置文件在哪

    {vs配置文件}在构建高可用、高性能的分布式系统或微服务架构时,VS配置文件(通常指代版本控制中的版本差异配置或特定框架如Visual Studio/VS Code的扩展配置,此处结合语境主要指代核心应用配置文件的版本管理与差异处理) 的管理效率直接决定了运维的稳定性与部署的准确性,核心结论在于:优秀的配置文件……

    2026年6月10日
    01301
  • CAS集群配置时,如何确保高可用性和性能优化?

    CAS集群配置指南CAS(Central Authentication Service)集群配置是构建高可用性、高性能认证系统的重要步骤,本文将详细介绍CAS集群的配置过程,包括环境准备、组件安装、配置文件修改、集群搭建以及测试验证等环节,环境准备在进行CAS集群配置之前,需要确保以下环境准备:操作系统:推荐使……

    2025年12月2日
    03490
  • 戴尔d430配置怎么样?,戴尔d430配置参数有哪些

    戴尔D430配置的现代价值戴尔Latitude D430作为2007年发布的轻薄商务本,其配置在今天看来虽已过时,但凭借仅1.3kg的机身和相对可靠的硬件,在结合云技术后,依然能作为轻量级云终端发挥余热,通过内存升级、固态硬盘替换以及接入酷番云桌面服务,D430可以流畅运行日常办公应用,实现老旧设备的有效再利用……

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

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

      2026年1月10日
      020
  • mbp2019配置怎么样?,2019款MacBook Pro配置参数

    2019款MacBook Pro配置依然能打,但需按需匹配,成竹在胸2019款MacBook Pro是苹果在Intel过渡期推出的重要机型,它在处理器、内存、存储和显卡上提供了当时最顶级的配置选项,至今仍能胜任多数专业创作和开发工作,焊死的内存、蝶式键盘的耐用性,以及高负载下的散热表现,是用户决策时必须权衡的关……

    2026年7月20日
    0914

发表回复

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