nginx配置多站点怎么做,多站点配置详细教程

Nginx 配置多站点的本质,是通过 server 块 与 listen 端口、server_name 域名 的组合,实现一台服务器资源的高效复用,对于绝大多数业务场景,推荐采用“目录隔离 + 独立配置文件 + 域名区分” 的方案,它兼顾了可维护性、安全性与扩展性,是生产环境中最稳健的实践路径。


多站点的三种实现方案

在动手配置前,先厘清三种主流方案,以便按需选择:

  • 端口区分:每个站点使用不同端口(如 8080、8081),配置简单,但用户访问需带端口号,体验较差,仅适合内部系统或调试场景。
  • 域名区分:多个域名共用 80/443 端口,通过 server_name 精准匹配,这是生产环境最常用的方式,对外表现为标准 Web 服务。
  • IP 区分:服务器绑定多个 IP,每个 IP 对应一个站点,受限于 IP 资源,现已较少使用。

直接选择域名区分方案,若暂时没有域名,可用端口方案临时过渡,但上线前务必切换。


目录结构设计:从源头规范

推荐在 Nginx 配置目录下建立清晰的站点目录结构:

/etc/nginx/
├── nginx.conf          # 主配置文件
├── sites-available/    # 站点可用配置(草稿区)
├── sites-enabled/      # 站点启用配置(软链接指向 available)
└── conf.d/             # 全局共享配置片段

站点文件命名规范:使用域名命名,如 example.com.conf,这样的命名方式在站点数量增长后,仍能保持极高的可辨识度,避免出现 server1.conf 这类含义不明的文件。


核心配置步骤详解

主配置文件引入站点目录

编辑 nginx.conf 的 http 块,确保包含以下内容:

nginx配置多站点怎么做,多站点配置详细教程

http {
    # 其他全局配置...
    include /etc/nginx/sites-enabled/.conf;
}

创建站点配置文件

在 sites-available/ 下为每个站点创建独立配置,以两个站点为例:

站点 A(blog.example.com):

server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog;
    index index.html index.php;
    access_log /var/log/nginx/blog.access.log;
    error_log  /var/log/nginx/blog.error.log;
    location / {
        try_files $uri $uri/ =404;
    }
    # PHP 处理(如有)
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

站点 B(shop.example.com):

server {
    listen 80;
    server_name shop.example.com;
    root /var/www/shop;
    index index.html;
    access_log /var/log/nginx/shop.access.log;
    error_log  /var/log/nginx/shop.error.log;
    location / {
        try_files $uri $uri/ =404;
    }
    # 静态资源缓存
    location ~ .(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

启用站点并重载

ln -s /etc/nginx/sites-available/blog.example.com.conf /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/shop.example.com.conf /etc/nginx/sites-enabled/
nginx -t && nginx -s reload

nginx -t 是必须执行的步骤,它能提前发现语法错误,避免线上服务中断。


深入优化:权限与安全性

多站点共存的服务器,安全隔离是容易被忽视的关键环节:

  • 运行用户隔离:为每个站点创建独立的系统用户,并在 server 块中通过 user 指令(需配合 nginx 主进程以 root 启动)指定,这能防止一个站点被入侵后波及其他站点。
  • nginx配置多站点怎么做,多站点配置详细教程

  • 目录权限最小化:站点根目录权限设为 750,文件设为 640,属主为对应站点用户,杜绝使用 777 权限。
  • 禁用未绑定域名的访问:在配置中增加一个默认拒绝的 server 块,拦截通过 IP 或未知域名发起的请求:
server {
    listen 80 default_server;
    server_name _;
    return 444;
}

444 是 Nginx 特有的响应码,直接断开连接而不返回任何内容,能有效减少恶意扫描。


性能调优建议

多站点场景下,Nginx 的性能瓶颈往往不在 Nginx 本身,而在于 站点间的资源争抢:

  • 开启 Gzip 压缩:在 http 块全局开启,减少带宽消耗。
  • 调整 worker 进程数:设为 CPU 核心数,可通过 auto 参数自动探测。
  • 静态资源独立缓存:如站点 B 配置所示,对不同类型资源设置差异化过期时间。
  • 日志切割:使用 logrotate 按天切割日志,避免单个日志文件过大导致磁盘耗尽。

常见问题排查

  • 访问站点时跳到默认站点:检查 server_name 是否拼写错误,以及 DNS 解析是否生效。
  • 静态文件 404:确认 root 路径是否存在且权限正确,并检查 try_files 配置。
  • 重载配置后服务异常:立即回滚配置,检查 nginx -t 输出,注意是否因编辑不当破坏了文件格式。

酷番云经验案例

我们曾协助一家电商客户进行多站点迁移,客户原有 3 个站点零散分布在多台服务器上,管理混乱且资源利用率低,在酷番云

nginx配置多站点怎么做,多站点配置详细教程

的云服务器上,我们采用上述“目录隔离 + 独立配置”方案,将站点统一规划,过程中重点处理了两个细节:

  • 跨站数据隔离:每个站点使用独立数据库账号,Nginx 层面通过 fastcgi_param 传递独立的环境变量,避免应用层串号。
  • CDN 与源站协调:客户启用了 CDN 加速,我们在 Nginx 配置中为 CDN 回源请求单独设置 server 块,并配置了精准的 allow/deny 规则,仅放行 CDN 节点 IP,保障源站安全。

迁移后,服务器成本降低约 40%,站点响应时间平均缩短 25%,运维效率显著提升。


相关问答

多站点配置中,sites-available 和 sites-enabled 目录的作用是什么?可以直接放在 conf.d 下吗?

sites-available 存放站点的“草稿”配置,sites-enabled 通过软链接方式“激活”需要的站点,这种模式便于临时禁用站点(删除软链接即可)而无需删除原配置,而 conf.d 更适合存放与站点无关的全局配置片段(如压缩、缓存参数),两者职能不同,建议按职责分离使用,若站点数量少、变更不频繁,将站点配置直接放入 conf.d 也可以,但不推荐,因为这会削弱配置管理的灵活性。

同一域名下,如何根据路径区分多个应用?

可以在一个 server 块内,用多个 location 块实现:

server {
    server_name example.com;
    location /blog/ {
        alias /var/www/blog/;
    }
    location /shop/ {
        alias /var/www/shop/;
    }
}

注意使用 alias 而非 root,否则路径映射会出错,这种方式适合应用间耦合度较低的场景,但若应用包含独立后端逻辑,仍建议拆分为独立站点,便于独立升级与故障隔离。

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

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

相关推荐

  • 魅蓝3的配置参数是什么,魅蓝3详细参数

    魅蓝3的核心配置解析与性能瓶颈突破方案魅蓝3作为魅族在千元机市场的重要布局,其核心配置直接决定了产品的市场定位与用户口碑,从硬件参数来看,魅蓝3搭载了联发科MT6750八核处理器,配合2GB/3GB运行内存与16GB/32GB存储空间,辅以5.2英寸720P高清屏幕和2200mAh电池,构成了其基础性能框架,单……

    2026年6月17日
    02071
  • BIM软件对电脑配置要求高吗?BIM软件需要什么配置?

    BIM软件对电脑配置的要求,取决于你的工作阶段和项目规模BIM软件不是单一软件,而是一套工作流,常用的Revit、Navisworks、Tekla、ArchiCAD等,其配置需求差异明显,但绝大多数性能瓶颈集中在模型实时渲染、视图刷新、构件数量承载上,CPU核心数、内存容量、固态硬盘、专业显卡是四大核心指标,轻……

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

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

      2026年1月10日
      020
  • 给vlan配置网关,如何配置vlan网关

    给VLAN配置网关:构建高效、安全网络架构的核心实践在网络架构设计中,给VLAN配置网关是打破广播域限制、实现跨网段通信的关键步骤,网关不仅是数据帧转发的出口,更是网络策略控制、安全隔离以及流量优化的第一道防线,正确配置VLAN网关,能够显著提升网络吞吐量,降低延迟,并为后续的安全审计和故障排查奠定坚实基础,核……

    2026年5月27日
    02262
  • 配置sds是什么意思,sds是什么

    配置SDS:构建高性能、高可用存储架构的核心策略在数字化转型的深水区,传统集中式存储已难以应对海量非结构化数据与高并发访问的双重挑战,软件定义存储(SDS)通过解耦硬件与软件,利用通用x86服务器构建弹性、智能的分布式存储池,已成为企业降低TCO(总拥有成本)并提升数据IO性能的关键技术路径, 成功的SDS部署……

    2026年6月8日
    01852

发表回复

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

评论列表(2条)

  • happy434man的头像
    happy434man 2026年8月27日 04:51

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于端口的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

    • brave814fan的头像
      brave814fan 2026年8月27日 04:51

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