nginx反向代理 负载均衡

这篇具有很好参考价值的文章主要介绍了nginx反向代理 负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

1.反向代理介绍:

 2.七层代理和四层代理:

  2.1 七层代理:

  2.2 四层代理:

3.反向代理web服务器:

  3.1 代理服务器配置:

3.2 服务器配置 :

3.3 客户端访问:

3.4 代理不同端口:

4.反向代理动静分离:

  4.1  准备:

  4.2 代理服务器配置:

  4.3 动态服务器配置:

  4.4 静态服务器配:

  4.5  测试:

5.反向代理服务器的缓存功能:

  5.1 主配置文件定义缓存参数:

  5.2 子配置文件调用缓存功能:

    5.3 示例:

代理服务器:

测试:

  6.反向代理客户端IP透传: 

    6.1反向代理服务器配置:

  6.2 服务器日志:   

7.反向代理负载均衡:

  7.1 默认算法轮询:

7.2  加权轮询:

7.3 IP_hash:

7.4 url_hash:

7.5 least_conn:

7.6 使用场景总结:


1.反向代理介绍:

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

   Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

 2.七层代理和四层代理:

  2.1 七层代理:

  • 七层是最常用的反向代理,只能配置的在nginx配置文件的http模块中
  • 配置的方法名称:upstream 模块,不能写在server中,也不能在location中,在http模块当中是独立的一个配置

  2.2 四层代理:

  • 四层代理是基于tcp/ip协议层的代理转发方式,可以实现基于ip地址和端口进行负载均衡转发。
  • 四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发。流量转发。
  • 配置的方法名称:stream,stream是不能配置在http模块中,配置在全局当中。是属于一个独立的模块,不属于其他任何模块。

3.反向代理web服务器:

  3.1 代理服务器配置:

vim /apps/nginx/conf.d/www.conf
server{
        listen 80;
        server_name  www.wzw.com;
        root    /apps/nginx/html;
     location  / {
        proxy_pass http://192.168.88.101;
}

}

3.2 服务器配置 :

      vim /apps/nginx/html/index.html

<html>
<body>
<h1>this is yunjisuan  </h1>
<img src="http://www.wzw.com/2.jpg"/>
</body>
</html>

3.3 客户端访问:

nginx反向代理 负载均衡,nginx,负载均衡,运维

3.4 代理不同端口:

   代理服务器添加监听端口:

nginx反向代理 负载均衡,nginx,负载均衡,运维

nginx反向代理 负载均衡,nginx,负载均衡,运维

4.反向代理动静分离:

  4.1  准备:

nginx反向代理 负载均衡,nginx,负载均衡,运维

  4.2 代理服务器配置:

server{
  listen 80;
  listen 8080;
  server_name www.wzw.com;
  root /apps/nginx/html;
  

location  /static {
        proxy_pass http://192.168.88.128;
}

location  /api  {
   proxy_pass http://192.168.88.101;
}
}

nginx -s reload

  4.3 动态服务器配置:

  cd /apps/nginx/html

  mkdire  api

  vim index.html

  api
  api
  api
  api
  api
  api
  api

vim /apps/nginx/conf/nginx.conf

 server块添加监听端口:
   listen 8080;

nginx -s reload

  4.4 静态服务器配:

  cd /apps/nginx/html

  mkdire  api

  vim index.html
   
  static
  static
  static
  static
  static
  static

  4.5  测试:

nginx反向代理 负载均衡,nginx,负载均衡,运维

nginx反向代理 负载均衡,nginx,负载均衡,运维

5.反向代理服务器的缓存功能:

  后端服务器突然关闭时,客户端无法访问,代理服务器的缓存功能可以加强安全稳定性。

  5.1 主配置文件定义缓存参数:

proxy_cache_path /apps/nginx/proxycache #定义缓存保存路径

levels=1:1:1 #定义缓存目录结构层次

keys_zone=proxycache:20m #指内存中缓存的大小,主要用于存放key

inactive=120s #缓存有效时间

max_size=10g; #最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值

  5.2 子配置文件调用缓存功能:

proxy_cache proxycache        ##使用定义名称; 

proxy_cache_key $request_uri;  #对客户端url的数据进行MD5的运算做为缓存的key

proxy_cache_valid   [code ...]  time;  #定义对【响应码】的响应内容的缓存时长     

proxy_cache_valid any 1m;  #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存

 清理缓存   方法1::rm -rf 缓存目录  (还是这个方便。。)

                  方法2: 第三方扩展模块ngx_cache_purge

    5.3 示例:

代理服务器:
vim /apps/nginx/conf/nginx.conf
 
http模块添加:

proxy_cache_path /apps/nginx/proyxcache levels=1:1:1  keys_zone=proxycache:20m inactive=120s max_size=1g;

vim /apps/nginx/conf.d/www.conf

server块添加:

   proxy_cache proxycache;
   proxy_cache_key $request_uri;
   proxy_cache_valid 200 302 301 10m;
   proxy_cache_valid any 5m;
测试:

  真实服务器关闭服务: 

nginx反向代理 负载均衡,nginx,负载均衡,运维

nginx反向代理 负载均衡,nginx,负载均衡,运维

   6.反向代理客户端IP透传: 

    6.1反向代理服务器配置:

location  / {
    proxy_pass http://192.168.88.101:8080;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     #添加 客户端IP和反向代理服务器IP到请求报文头部;
}


proxy_set_header X-Real-IP $remote_addr;
  #也可以使用,只添加客户端IP到请求报文头部,转发至后端服务器;

  6.2 服务器日志:   

$http_x_forwarded_for;    记录跳转信息,默认日志中有此项。如果是自定义日志需要添加。

nginx反向代理 负载均衡,nginx,负载均衡,运维

7.反向代理负载均衡:

    Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。

  7.1 默认算法轮询:

    最基本的配置方法,每个请求会按时间顺序逐一分配到不同的后端服务器基本上1:1。

upstream wzw {                   ##定义一组服务器组
   server 192.168.88.101;
   server 192.168.88.128;

}

server{
  listen 80;
  server_name www.wzw.com;
  root /apps/nginx/html;


location  / {
    proxy_pass http://wzw;    ##代理到wzw组
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

nginx反向代理 负载均衡,nginx,负载均衡,运维

nginx反向代理 负载均衡,nginx,负载均衡,运维

7.2  加权轮询:

  加权轮询建立在轮询算法之上,通过给不同web服务器权重,让处理能力更强的服务器可以分配到更多的请求。

upstream wzw {                   ##定义一组服务器组
   server 192.168.88.101  weight=5;
   server 192.168.88.128  weight=1;

}

server{
  listen 80;
  server_name www.wzw.com;
  root /apps/nginx/html;


location  / {
    proxy_pass http://wzw;    ##代理到wzw组
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

7.3 IP_hash:

  • ip_hash根据IP地址,计算出hash值,使用ip_hash算法,同一客户端的请求会被分配到同一个后端服务器,从而保证会话的稳定性,请求速度块。
  • 缺点:如果后端服务器数量发生改变,hash会重新计算,请求服务器也会改变。
upstream wzw { 
      ip_hash;        ##同一个IP客户端固定访问一个后端服务器
      server 192.168.88.101; weight=5;
      server 192.168.88.128; weight=1;
}

7.4 url_hash:

   根据uri地址计算hash值,使用url_hash会把相同请求的uri分配到同一个后端web服务器

upstream wzw { 
      hash $request_uri consistent;   #基于用户请求的uri做hash
      server 192.168.88.101; weight=5;
      server 192.168.88.128; weight=1;
}

7.5 least_conn:

    最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器

   主要适用于后端服务器处理任务耗时不同的情况,避免了所以请求集中在处理能力更强的服务器上,一般配合加权轮询使用

upstream wzw { 
      least_conn;
      server 192.168.88.101; weight=5;
      server 192.168.88.128; weight=1;
}

7.6 使用场景总结:

  1. 小场景:并发量很小,默认算法就可以满足
  2. 后端web服务器的处理性能有差异:加权轮询与最少连接数配合使用
  3. 大型并发:ip_hash或url_hash(可直接访问缓存,从而缓解后端服务器压力,第一次请求后,会有贝蒂缓存,而且因hash算法原因,请求的后端web服务器不会发生变化,从而可以提高访问速度。

 注: 

ip_hash:后端服务器数量发生变化,请求的服务器也会发生变化

url_hash:请求的地址发生变化,请求的服务器也可能发生变化文章来源地址https://www.toymoban.com/news/detail-693317.html

到了这里,关于nginx反向代理 负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx反向代理与负载均衡

    代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。 不管是正向代理还是反向代理,实现的都是上面的功能。 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从

    2023年04月26日
    浏览(29)
  • Nginx反向代理和负载均衡

    ` 正向代理 反向代理 七层反向代理: (基于http协议) http { upstream 服务器组名称 { server IP1:PORT [weight=1 …]; server IP2:PORT; … 调度算法(rr轮询/加权轮询,least_conn最小连接,ip_hash,url_hash,fair); } server { location ~ … { proxy_pass http://服务器组名称; proxy_set_header HosT $host; proxy_set_he

    2024年02月03日
    浏览(70)
  • 06、Nginx反向代理与负载均衡

    反向代理 : 这种代理方式叫做,隧道代理。有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要 负载均衡 : 把请求,按照一定算法规则,分配给多台业务服务器(即使其中一个坏了/维护升级,还有其他服务器可以继续提供服务) 反向代理+负载均衡:

    2024年02月12日
    浏览(29)
  • Nginx的反向代理和负载均衡

    Nginx作为面试中的大…小头目,自然是不能忽视的,而以下两点就是它能成为面试中头目的招牌。 反向代理和负载均衡 在此之前,我们先对Nginx做一个简单的了解 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能

    2024年02月08日
    浏览(32)
  • 【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

    本文将要讨论以下内容 正向代理与反向代理的基本概念 Nginx正向代理服务的配置指令、Nginx反向代理服务的配置指令 Nginx反向代理服务器的应用——负载均衡、故障转移 案例分析   正向代理的概念 局域网内的机器借助代理服务访问局域网外的网站,此代理服务器提供的服务

    2024年01月24日
    浏览(34)
  • Nginx【反向代理负载均衡动静分离】--中

    示意图 示意图 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快 linux 下有Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务, Nginx 提供了几种分配方式(策略): 轮询(默认) ​ 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服

    2024年02月09日
    浏览(41)
  • Nginx【反向代理负载均衡动静分离】--上

    需求1: 访问不同微服务 示意图 需求2: 轮询访问服务 示意图 解决方案: Nginx 反向代理 负载均衡 动静分离 高可用集群 Nginx 在分布式微服务架构的位置 Nginx 是什么? 能干什么? 是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器 能干什么:反向代理负载均衡动静

    2024年02月08日
    浏览(46)
  • Nginx【反向代理负载均衡动静分离】--下

    示意图 图解 一个master 管理多个worker ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而不是多线程结构. 当client 发出请求(任务)时,master Process 会通知管理的worker process worker process 开始争抢任务, 争抢到的worker process 会开启连

    2024年02月08日
    浏览(41)
  • nginx反向代理及负载均衡的实现

    目录 1.nginx反向代理 2.nginx负载均衡 3.nginx反向代理及负载均衡实现 nginx反向代理 4台主机都需要的操作: 两台服务器操作: 两台主机服务器进行测试; nginx负载均衡配置 4.nginx配置其他参数 多虚拟机访问 后端服务器日志中需要记录客户端真实ip nginx设置不同的url访问不同页面

    2024年02月14日
    浏览(34)
  • Nginx反向代理实现负载均衡webshell

    目录 本实验所用的环境: 问题一:由于nginx采用的反向代理是轮询的方式,所以上传文件必须在两台后端服务器的相同位置上传相同的文件 问题二:我们在执行命令时,无法知道下次的请求交给哪台机器去执行我们在执行hostname -i查看当前执行机器的IP时,可以看到IP地址一

    2024年02月04日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包