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

2024-02-28 10:44

本文主要是介绍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,就会报错,只能开一台服务 

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

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

这篇关于Nginx网络服务六-----IP透传、调度算法和负载均衡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755275

相关文章

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务