nginx反向代理及负载均衡的实现

目录

1.nginx反向代理

2.nginx负载均衡

3.nginx反向代理及负载均衡实现

nginx反向代理

4台主机都需要的操作:

两台服务器操作:

两台主机服务器进行测试;

nginx负载均衡配置

4.nginx配置其他参数

多虚拟机访问

后端服务器日志中需要记录客户端真实ip

nginx设置不同的url访问不同页面,可以实现动静分离

在代理主机上设置:

在web服务器上:

测试:

5.nginx的upstream其他参数

backup:

down:

1.nginx反向代理

原理:客户端向反向代理服务器发送请求,反向代理服务器将请求发送给相应服务器,然后服务器收到并将响应返回给反向代理服务器,由反向代理服务器将响应返回给客户端。

优点:1.可以有效防止对服务器的恶意攻击。2.减少服务器的压力。3.提高访问速度。

2.nginx负载均衡

负载均衡:防止一台服务器宕机之后,业务出现阻断。

优点:减少服务器压力,解决某时刻高并发。

3.nginx反向代理及负载均衡实现

nginx反向代理

配置准备4台主机,并在5台主机,4台上都安装nginx,另外一台客户端

4台主机都需要的操作:

复制代码
检查防火墙与selinux
1.安装epel扩展源
yum install -y epel-release

2.安装nginx
yum install -y nginx

两台服务器操作:

复制代码
配置虚拟主机
1.vim /etc/nginx/conf.d/vhost.conf
server {
	listen 80;
	server_name bbs.yunjisuan.com;
	location / {
	root /usr/share/nginx/html/bbs;
	index index.html index.htm;

}
access_log /usr/share/nginx/html/www/logs/access_www.log main;    这两个日志目录需要自己创建
}
server {
        listen 80;
        server_name www.yunjisuan.com;
        location / {
        root /usr/share/nginx/html/www;
        index index.html index.htm;

}
access_log /usr/share/nginx/html/bbs/logs/access_bbs.log main;
}

2.配置网页页面
mkdir -pv /usr/share/nginx/html/{bbs,www}
切到不同目录配置页面即可
echo "this is $HOSTNAME bbs" > index.html

3.重启nginx服务

两台主机服务器进行测试;

复制代码
curl -H host:bbs.yunjisuan.com 192.168.27.12
curl -H host:bbs.yunjisuan.com 192.168.27.122
curl -H host:bbs.yunjisuan.com 192.168.27.123
curl -H host:www.yunjisuan.com 192.168.27.123
curl -H host:www.yunjisuan.com 192.168.27.122

nginx负载均衡配置

负载均衡需要在两台不是服务器的主机上操作

负载均衡的关键段是upstream(定义转发池)porxy_pass (指定转发)

复制代码
两台主机:
1.编写额外配置文件
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf 
upstream www_server_pools {
	server 192.168.27.122:80 weight=2;    定义转发找这两个服务器
	server 192.168.27.123:80 weight=1;
}
server {
	listen 80;
	server_name www.yunjisuan.com;
	location / {
	proxy_pass http://www_server_pools;    当访问网址时,转发到这个转发池
}
}
server {
        listen 80;
        server_name bbs.yunjisuan.com;
        location / {
        proxy_pass http://www_server_pools;

}
}
2.重新启动
3.在客户端配置hosts解析文件
vim /etc/hosts
代理主机    www.yunjisuan.com bbs.yunjisuan.com
4.客户端进行测试
for ((i=1;i<=10;i++));do curl http://bbs.yunjisuan.com; done

4.nginx配置其他参数

多虚拟机访问

当配置好负载均衡后,访问bbs可能出现的页面还是www,是因为没有找到对应的请求头部信息。

配置:

复制代码
1.在代理主机上配置
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf 
upstream www_server_pools {
	server 192.168.27.122:80 weight=2;
	server 192.168.27.123:80 weight=1;
}
server {
	listen 80;
	server_name www.yunjisuan.com;
	location / {
	proxy_pass http://www_server_pools;
	proxy_set_header Host $host;    定义这一行
	
}
}
server {
        listen 80;
        server_name bbs.yunjisuan.com;
        location / {
        proxy_pass http://www_server_pools;
	proxy_set_header Host $host;
	

}
}

后端服务器日志中需要记录客户端真实ip

默认不会再服务器中记录客户端真实ip,只会记录代理主机,所以开启相应参数,记录客户端真实ip。

复制代码
在代理主机进行操作
[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf 
upstream www_server_pools {
	server 192.168.27.122:80 weight=2;
	server 192.168.27.123:80 weight=1;
}
server {
	listen 80;
	server_name www.yunjisuan.com;
	location / {
	proxy_pass http://www_server_pools;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
        listen 80;
        server_name bbs.yunjisuan.com;
        location / {
        proxy_pass http://www_server_pools;
	    proxy_set_header Host $host;
	    proxy_set_header X-Forwarded-For $remote_addr;

}
}

重启并测试

nginx设置不同的url访问不同页面,可以实现动静分离

在代理主机上设置:

复制代码
vim /etc/nginx/conf.d/vhosts.conf
upstream static_pools {                    定义不同的转发池
        server 192.168.27.122:80;
}
upstream active_pools {
        server 192.168.27.123:80;
}
server {
        listen 80;
        server_name www.yunjisuan.com;
        location /static/ {
       
        proxy_pass http://static_pools;
        proxy_set_header Host $host;
}
        location /active/ {
         proxy_pass http://active_pools;
         proxy_set_header Host $host;
        }

}

重启

在web服务器上:

复制代码
两台服务器都可以操作
1.将之前的虚拟主机停到改一下后缀名称
2.配置不同页面
cd /usr/share/nginx/html/
mkdir static
cd static/
echo "this is static" > index.html
cd ..
mkdir active
echo "this is active" > index.html

重启

测试:

复制代码
curl http://www.yunjisuan.com/active/
curl http://www.yunjisuan.com/static/    一定要带最后面的/

5.nginx的upstream其他参数

backup:

当所有服务器宕机之后,会去寻找配置了backup的页面

复制代码
upstream www_server_pools {
	server 192.168.27.122:80 weight=2;
	server 192.168.27.123:80 weight=1;
    server 192.168.27.120:80 backup;
}

down:

配置之后,会将会话保持:

复制代码
upstream www_server_pools {
    ip_hash;
	server 192.168.27.122:80 weight=2;
	server 192.168.27.123:80 weight=1;
  
}

注意:backup和ip_hash不可以同时使用。

相关推荐
YC运维3 小时前
Dockerfile实战案例详解
运维·docker·容器
一个响当当的名号3 小时前
一些主要应用和NAT
运维·服务器·网络
@小博的博客3 小时前
【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇
linux·运维·学习
小灰灰的可爱无人可替代6 小时前
记录一次使用docker和docker-compose更新vue前端项目问题
nginx·docker·vue
做运维的阿瑞6 小时前
Linux系统性能监控与故障定位实战:CPU/内存/I/O/网络
linux·运维·网络
wanhengidc7 小时前
云手机能够做些什么?
运维·服务器·人工智能·智能手机·云计算
会飞的鱼_1237 小时前
设备管理平台项目全流程部署指南:从环境到ELK日志监控
nginx
雲帝8 小时前
爱发电nginx转发企业微信webhook
nginx
筑梦之路9 小时前
CentOS 7 升级perl版本到5.40.3 —— 筑梦之路
linux·运维·centos
数据要素X10 小时前
寻梦数据空间 | 架构篇:从概念到落地的技术实践与突破性创新
大数据·运维·数据仓库·微服务·数据治理·数据中台·可信数据空间