当前位置:首页 > 技术 > 正文内容

Nginx 分发多服务器与多网站配置指南

访客 技术 2026年6月30日 2

本文将指导您如何使用 Nginx 实现多台服务器和多个网站的分发。我们将从下载 Nginx 开始,逐步配置其反向代理功能,以实现负载均衡和虚拟主机托管。

1. 环境准备

首先,您需要下载 Nginx。推荐版本为 nginx-1.4.7,可从 Nginx 官方下载页 获取。

下载后,请将 Nginx 解压到非中文路径下,以避免潜在问题。

2. 创建测试页面

为了便于演示,请在每个计划托管的网站目录下创建一个名为 default.htm 的测试文件,内容如下:

<html>
<head>
<title>Nginx 测试页面</title>
</head>
<body>
   欢迎访问 <strong>[服务器IP或主机名]:[端口号]</strong> 网站!
</body>
</html>

请根据实际部署情况修改 [服务器IP或主机名][端口号]

3. 配置后端网站

您需要准备多个后端服务器或在本地配置多个网站实例。

  • 本地 IIS 网站 (示例): 在本地 IIS 中配置四个网站,分别监听 6001, 6002, 6003, 6004 端口。
  • 服务器 118 (示例): 在 IP 地址为 192.168.0.118 的服务器上配置一个网站,监听 6005 端口。
  • 服务器 228 (示例): 在 IP 地址为 192.168.0.228 的服务器上配置一个网站,监听 6006 端口。

确保每个网站目录下都包含已修改的 default.htm 文件。

4. Nginx 配置文件修改 (nginx.conf)

找到 Nginx 安装目录下的 conf/nginx.conf 文件。在修改前,强烈建议备份原文件。

以下是关键的配置修改部分:

4.1. Upstream 配置 (后端服务器集群定义)

upstream 指令用于定义一组后端服务器。您可以为不同的网站或应用定义不同的 upstream 块。

  • name_erp: 定义了一个名为 name_erp 的后端服务器集群,用于分发到本地的多个网站。weight 参数表示服务器的权重,数值越大,分发的请求越多。
  • name_api: 定义了一个名为 name_api 的后端服务器集群,用于分发到局域网内的其他服务器。

示例配置:

# 定义 ERP 网站后端服务器集群
upstream name_erp {
    server localhost:6001 weight=2; # 权重为 2
    server localhost:6002 weight=1;
    server localhost:6003 weight=1;
    server localhost:6004 weight=1;
}

# 定义 API 网站后端服务器集群
upstream name_api {
    server 192.168.0.118:6005 weight=1;
    server 192.168.0.228:6006 weight=1;
}

4.2. Server 配置 (虚拟主机与反向代理)

server 块定义了一个虚拟主机。

  • 监听端口 8888 (HTTP): 配置 Nginx 监听 8888 端口,并将所有指向 localhost 的请求通过 proxy_pass 指令反向代理到 name_erp 集群。
  • 监听端口 8889 (HTTP - 示例): 配置 Nginx 监听 8889 端口,并将所有指向 localhost 的请求反向代理到 name_api 集群。请确保此端口与 8888 端口不冲突。

示例配置:

http {
    # ... 其他配置 ...

    upstream name_erp {
        server localhost:6001 weight=2;
        server localhost:6002 weight=1;
        server localhost:6003 weight=1;
        server localhost:6004 weight=1;
    }

    upstream name_api {
        server 192.168.0.118:6005 weight=1;
        server 192.168.0.228:6006 weight=1;
    }

    server {
        listen       8888;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass    http://name_erp; # 指向 name_erp 集群
        }
    }

    server {
        listen       8889;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass    http://name_api; # 指向 name_api 集群
        }
    }

    # ... 其他配置 ...
}

如果您需要配置 HTTPS,可以参考 Nginx 官方文档添加相应的 listen 443 ssl; 及 SSL 证书配置。

5. 启动 Nginx

在命令行中,首先定位到 Nginx 的安装目录,然后执行启动命令:

cd 存放nginx的英文根目录路径
start nginx

6. Nginx 常用命令

  • 重新加载配置: nginx -s reload
  • 停止 Nginx: nginx -s stop
  • 退出 Nginx: nginx -s quit
  • 强制停止所有 Nginx 进程: taskkill /IM nginx.exe /F
  • 启动 Nginx: start nginx

通过以上配置,Nginx 即可实现对多个后端服务器和多个网站的反向代理和负载均衡。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。