Nginx 分发多服务器与多网站配置指南
本文将指导您如何使用 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 即可实现对多个后端服务器和多个网站的反向代理和负载均衡。