Nginx网络服务六-----IP透传、调度算法和负载均衡

1.实现反向代理客户端 IP 透传

就是在日志里面加上一个变量

Module ngx_http_proxy_module

root@centos8 \~\]# cat /apps/nginx/conf/conf.d/pc.conf server { listen 80; server_name www.kgc.org; location / { index index.html index.php; root /data/nginx/html/pc; proxy_pass http://10.0.0.18; #proxy_set_header X-Real-IP $remote_addr; #只添加客户端IP到请求报文头部,转发至后端服务器 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #添加客户端IP和反向代理服务器IP到请求报文头部 } } #重启nginx \[root@centos7 \~\]#systemctl restart nginx #后端Apache配置: \[root@centos7 \~\]#vim /etc/httpd/conf/httpd.conf LogFormat "%{X-Forwarded-For}i %h %l %u %t \\"%r\\" %\>s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\"" combined #重启apache访问web界面并验证apache日志 \[root@centos8 \~\]#cat /var/log/httpd/access_log 10.0.0.1 10.0.0.8 - - \[05/Mar/2019:00:40:46 +0800\] "GET / HTTP/1.0" 200 19 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" #Nginx配置: \[root@centos8 conf.d\]# cat /apps/nginx/conf/nginx.conf "$http_x_forwarded_for"' #默认日志格式就有此配置 #重启nginx访问web界面并验证日志格式: 10.0.0.8 - - \[04/Mar/2019:16:40:51 +0800\] "GET / HTTP/1.0" 200 24 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" "10.0.0.1" nginx已经可以看到了 先看主配置文件中 /apps/nginx/conf/nginx.conf 在看日志配置文件 /apps/nginx/logs/access.log

日志变量简单介绍

1.1实验:单机去传

###7-1,7-3为nginx

###7-2为apache

###7-2是apache

tail -f /etc/httpd/logs/access_log

###实时看日志

1.先在 7-1 自己的文件中写内容

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#添加客户端IP和反向代理服务器IP到请求报文头部

2.在 7-2 的日志主配置文件中写内容

vim /etc/httpd/conf/httpd.conf

3.用7-3访问,然后看7-2的日志

1.2实验:多机去传

三台主机均为nginx服务
1.将7-2转为nginx服务

发生的一个小错误,跳转到下面的 "小问题解决" 去看
2.然后开启nginx服务

3.编辑内容

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#添加客户端IP和反向代理服务器IP到请求报文头部

4.去7-1访问一下

5.浏览器访问,看日志信息

三个地址我们都能看到,这就是IP透传

2.http反向代理负载均衡

在上一个节中Nginx可以将客户端的请求转发至单台后端服务器但是无法转发至特定的一组的服务器,而且不能对后端服务器提供相应的服务器状态监测,Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
官方文档: https://nginx.org/en/docs/http/ngx_http_up

2.1轮询

1.给7-3和7-2网页编辑内容

我们做实验,为了看到效果,所以内容不一样

真实环境中,内容是一样的

2.在7-1的主配置文件下写内容

下面图标错了,是7-1!!!

3.在7-1中访问

4.当我们把7-3nginx服务停掉

5.把7-3nginx开启

2.2加权轮询

1.编辑主配置文件

2.访问,查看结果

2.3参数解析

max_fails=3 ###连你3次,没反应就认为你死了
fail_timeout=30 ###上线后,给一个延迟时间30s,然后再连你
max_conns=10 ###最大连接数,只给你连10个
backup #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器 sorry server 自己不能转自己

2.4设置备胎

1.编辑主配置文件

2.curl访问看结果

3.停掉7-2服务

2.5hash

1.写配置文件内容

2.访问看结果

缺点:和你的权重有关(weight),当你改变权重,会改变他的地址

2.6url hash

1.改配置文件

2.访问看结果

实现每个url定向到同一个后端服务器

2.7cookie hash

1.编辑主文件

2.看结果

3.换一下data

-b name=data 从服务器响应set-cookie得到值,返回给服务器

2.8ip hash

1.修改主配置文件

2.curl访问看结果

3.四层代理

stream

###用的四层,只能控制tcp、udp(实现反向代理功能,包括TCP协议代理)

安装redis

小问题解决

在我们安装了apache(httpd)的情况下;当我们想装nginx,发现开启报错

1.当我们开启服务到时候,查看日志报错信息:我们80端口被占用

一台主机只能给一个服务提供80端口,当有两台服务都是80,就会报错,只能开一台服务

如果想用两个服务,可以去其中一个服务下的主配置文件中,更改他的端口号

这样两项服务都可以一起开启了

相关推荐
乌托邦的逃亡者20 分钟前
Docker的/var/lib/docker/目录占用100%的处理方法
运维·docker·容器
ldj202025 分钟前
Jenkins 流水线配置
运维·jenkins
古希腊数通小白(ip在学)3 小时前
stp拓扑变化分类
运维·服务器·网络·智能路由器
Muxiyale3 小时前
使用spring发送邮件,部署ECS服务器
java·服务器·spring
l1x1n05 小时前
Vim 编辑器常用操作详解(新手快速上手指南)
linux·编辑器·vim
12点一刻5 小时前
搭建自动化工作流:探寻解放双手的有效方案(2)
运维·人工智能·自动化·deepseek
未来之窗软件服务5 小时前
东方仙盟AI数据中间件使用教程:开启数据交互与自动化应用新时代——仙盟创梦IDE
运维·人工智能·自动化·仙盟创梦ide·东方仙盟·阿雪技术观
FreeBuf_5 小时前
微软365 PDF导出功能存在本地文件包含漏洞,可泄露敏感服务器数据
服务器·microsoft·pdf
lixzest6 小时前
C++ Lambda 表达式详解
服务器·开发语言·c++·算法
ajassi20006 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化