Nginx 是一个轻量级的 WEB 服务器,反向代理服务器和电子邮件服务器,本文介绍在虚拟机中使用不同的端口来模拟不同的服务器,并使用 Nginx 反向代理功能实现服务器负载均衡的效果。
新建两个站点
首先新建两个 WEB 目录当做不同的服务器下的站点,一个是 website-A,一个是 website-B. 这两个站点目录应该是在不同的服务器上,而且代码是一模一样的,这里为了方便在一台虚拟机上模拟不同服务器,并且把两个站点目录下的首页做了一点修改,以区分访问到的是不同目录(服务器)下的站点。两个站点都只有一个简单的 index.html 的首页,里面内容是”This is website A”这样的。
vagrant@homestead:~/html/load-balance$ ls
website-A website-B
配置 Nginx 反向代理和负载均衡
在 /etc/nginx/sites-enabled 目录下新建一个文件,如: test-load-balance,内容如下:
upstream tanteng_me {
server localhost:1031;
server localhost:1032;
}
server {
listen 80;
server_name tanteng2.me www.tanteng2.me;
location / {
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tanteng_me;
}
}
这个反向代理服务器监听 80 端口,并定义了一个服务器负载均衡的模块,这里两个不同的端口代表不同的服务器(由于是在一台虚拟机中,并没有安装多个虚拟机,因此采用不同的端口的方式来模拟)。
Nginx WEB 服务器配置
在 /etc/ngxin/conf.d/ 下新建 load-balance.conf,内容如下:
server {
listen 1031;
server_name tanteng2.me;
root /usr/share/nginx/html/load-balance/website-A;
index index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
server {
listen 1032;
server_name tanteng2.me;
root /usr/share/nginx/html/load-balance/website-B;
index index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
这里配置了两个服务器,通过监听不同的端口设置站点根目录分别是 website-A 和 website-B,经过以上配置之后,绑定虚拟机 host,并通过浏览器访问。
可以看到刷新页面,内容也在发生变化,说明通过负载均衡配置,实现了轮询服务器效果。
本文介绍了在不同端口下模拟 Nginx 反向代理和负载均衡,不仅可以了解基本的 Nginx 反向代理和负载均衡配置,而且用这种不同端口模拟不同服务器的方式可以做另外一件事情,后续再讲。
|