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不可以同时使用。

相关推荐
志栋智能32 分钟前
超自动化运维与DevOps的深度融合
运维·网络·人工智能·安全·自动化
前端世界8 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
海宇服务8 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
上海云盾-小余8 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
言乐69 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
蓝速科技12 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
H_oRIZoN_13 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-14 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
网安老伯15 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型