Nginx反向代理负载均衡群集实战
使用Nginx做负载均衡器,代理web服务器,用户请求的数据都指向Nginx负载均衡器,Nginx负责调度后端的Web服务器提供服务。
环境搭建及说明:
nginx负载均衡器LNMP环境或只安装nginx服务;两块网卡,192.168.11.30(模拟公网ip),192.168.20.30(内网)
web服务器LAMP环境1:ip地址为内网 192.168.20.10 apache为2.4版本
web服务器LAMP环境2:ip地址为内网 192.168.20.11
web服务器LAMP环境3:ip地址为内网 192.168.20.12
三台web服务器网站目录,程序保持一致。内网ip保持与nginx负载均衡器同一个网段。
1、只有一个站点的配置:
web1、web2、web3上操作:
httpd配置文件加入,允许网站目录访问;开启vhost虚拟配置文件。
# vi /etc/httpd/httpd.conf
Include /etc/httpd/extra/httpd-vhosts.conf
<Directory /data/www>
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
虚拟主机配置
# vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/www"
</VirtualHost>
创建目录,写入index.html文件区分。
mkdir /data/www
在每一个web目录下写入index.html,内容分别为:This is LAMP 1 !;This is LAMP 2!;This is LAMP 3!
# curl 192.168.20.10
This is LAMP 1 !
# curl 192.168.20.11
This is LAMP 2!
# curl 192.168.20.12
This is LAMP 3!
nginx代理服务器操作:
写一个代理配置文件:
# cat /usr/local/nginx/conf/vhosts/nginxproxy.conf
upstream backend {
server 192.168.20.10:80 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.20.11:80 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.20.12:80 weight=1 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
index index.html;
location / {
proxy_pass http://backend;
}
}
hosts添加本地ip地址解析,模拟公网ip对应域名;windows本地hosts也要增加解析;
# cat /etc/hosts
使用curl测试,默认rr轮询,访问一次web1,一次web2,一次web3
使用for循环执行,查看访问结果:
This is LAMP 2!
This is LAMP 1 !
This is LAMP 3!
This is LAMP 2!
This is LAMP 1 !
This is LAMP 3!
This is LAMP 2!
This is LAMP 1 !
This is LAMP 3!
This is LAMP 2!
2、多个站点的配置:
httpd配置文件加入,允许网站目录访问;
<Directory /data/bbs>
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
虚拟主机配置增加
# vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/bbs"
</VirtualHost>
创建目录,写入index.html文件区分。
mkdir /data/bbs
nginx负载均衡服务器,虚拟主机增加server:
server {
listen 80;
index index.html;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
hosts添加本地ip地址解析,模拟公网ip对应域名;windows本地hosts也要增加解析;
# cat /etc/hosts
使用for循环执行,查看访问结果:
3、upstream 下面增加ip_hash;
测试结果如下:保持用户连接,也会导致分配不均。
4、增加一个upstream,单独针对bbs的请求进行负载均衡,并设置权重,配置文件如下:
upstream backend {
server 192.168.20.10:80 weight=2 max_fails=3 fail_timeout=30s;
server 192.168.20.11:80 weight=1 max_fails=3 fail_timeout=30s;
}
upstream bbs {
server 192.168.20.11:80 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.20.12:80 weight=2 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
index index.html;
location / {
proxy_pass http://backend;
}
}
server {
listen 80;
index index.html;
location / {
proxy_pass http://bbs;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
实验结果如下
This is LAMP 2!
This is LAMP 1 !
This is LAMP 1 !
This is LAMP 2!
This is LAMP 1 !
This is LAMP 1 !
This is LAMP 2!
This is LAMP 1 !
This is LAMP 1 !
This is LAMP 2!
同理,如果有多台服务器,多个站点可以进行分配、关联对应。
更多Nginx相关教程见以下内容:
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
相关推荐
全文使用的环境如题,主机使用的是腾讯云主机。内容应该会是linux和apache这些所有部分都有一点,因为是遇见一个问题就记录一个。 尝试清除浏览器缓存/换一个浏览器验证/重启服务器的apache服务