锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 专题栏目
  3. Nginx专题
  4. Nginx+Tomcat负载均衡、反向代理

Nginx+Tomcat负载均衡、反向代理

0
  • Nginx专题
  • 发布于 2024-09-28
  • 14 次阅读
黄健
黄健

目录


一、代理

1.概述

二、Nginx反向代理

1.七层反向代理 - 动静分离

2.四层反向代理 - 负载均衡

三、Nginx负载均衡调度策略



一、代理

1.概述

代理:
指服务端和客户端之间架设的一层服务器。代理负责接受客户端的请求并将它转发给服务端,然后再将服务端返回的响应转发给客户端。

代理又分为正向代理和反向代理。

正向代理:
为客户端服务的,客户端可以根据正向代理访问到它本身无法访问到的服务器资源。

反向代理:
为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。

二、Nginx反向代理

1.七层反向代理 - 动静分离

七层反向代理:
基于http、https等七层应用协议的代理转发,可以根据用户的请求访问的URL路径来转发请求,通常用于动静分离等应用场景。

Nginx动静分离:
通过location匹配用户的访问路径来判断是动静态资源请求还是动态资源请求。静态资源请求就由Nginx自行处理并相应,动态资源请求则通过反向代理转发请求给后端应用服务器处理了。

配置:

1)在 http 配置块中使用 upstream 定义后端应用服务器池的名称和各个节点的参数
http {
    upstream 服务器池名称 {
        server IP1:PORT1 weight=1;
        server IP2:PORT2 weight=1;
        [调度策略;]
    }

2)在 server 配置块中使用 location 匹配用户请求的动态资源的URL路径,在 location 配置块里使用 proxy_pass 基于协议配置转发
    server {
        listen 
        server_name
        .....
        location ~ .*\.jsp$ {
            proxy_pass http://服务器池名称;

            #还可以添加一些转发参数,用于为后端服务器获取真实的客户端地址
            proxy_set_header HOST $host;        
            proxy_set_header X_Real_IP $remote_addr;        
            proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;        
        }       
    }

}

2.四层反向代理 - 负载均衡

四层反向代理:
基于IP端口实现的代理转发,可以根据用户请求的IP或端口来转发请求,通常用于做网络接入层的负载均衡器等应用场景。

Nginx负载均衡:
通过反向代理实现的,可以将Nginx反向代理服务器接收到的请求根据调度策略转发给多个后端应用服务器处理。

配置:

1)编译安装nginx时需要添加 stream 四层代理模块  ./configure --with-stream

2)在 http 配置块上面同层级添加 stream 配置块,在 stream 配置块里添加 upstream 配置块,使用 upstream 定义后端应用服务器池的名称和各个节点的参数
stream {
    upstream 服务器池名称 {
        server IP1:PORT1 weight=1;
        server IP2:PORT2 weight=1;
        [调度策略;]
    }

3)在 stream 配置块里添加 server 配置块,在 server 配置块里使用 listen 定义监听地址和端口,使用 proxy_pass 配置转发
    server {
        listen  IP:PORT;
        proxy_pass 服务器池名称;
    }
}

http {....}

三、Nginx负载均衡调度策略

  • 轮询:是nginx默认调度策略,按照时间顺序逐一分配请求
  • 加权轮询:使用weight参数设置权重,权重值越高的后端节点被分配请求的概率越大
  • least_conn(最少连接):优先将请求分配给当前连接数最少的后端节点
  • ip_hash:根据客户端IP做hash缓存调度,会将来自同一个IP的请求都分配给固定的一个后端节点
  • url_hash:根据客户端请求的URL路径做hash缓存调度,会将相同的URL路径的请求都分配给固定的一个后端节点。需要第三方插件模块支持
  • fair:优先将请求给给响应时间最少的后端节点。需要第三方插件模块支持
  • random:随机分配请求
  • hash $remote_addr consistent:一致性hash算法,根据nginx全局变量的值来做hash缓存调度

配置举例:

upstream 服务器池名称 {
    server IP1:PORT1   weight=权重  max_fails=最大的失败次数  fail_timeout=暂时服务的时间;
    .....
    least_conn;/ip_hash;/fair;/hash $request_uri;/random;
}

Nginx负载均衡如何实现会话保持

  1. ip_hash、url_hash、hash $remote_addr consistent
    基于客户端IP或请求的URL路径将请求发送到同一个后端节点服务器来实现会话保持,但是此法容易出现负载失衡问题

  2. sticky_cookie_insert
    基于cookie判断实现会话保持

    upstream backend {
       server IP1:PORT1;
       server IP2:PORT2;
       sticky_cookie_insert  srv_id   expires=浏览器中保持cookie的时间    domain=cookie的域名    path=cookie的路径;
    }
    
  3. 通过后端应用服务器自身机制,配合使用缓存数据库(redis、memcached等)为后端节点服务器做session同步复制实现会话保持

原文链接: https://blog.csdn.net/2401_85983616/article/details/142596560

标签: #nginx 9
相关文章

Nginx部署前端Vue项目 2024-09-26 17:57

在使用Nginx部署前端Vue项目时,我们主要关注的是如何高效地将静态资源(HTML、CSS、JavaScript、图片等)提供给客户端浏览器。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Nginx作为一个高性能的HTTP和反向代理服务器,非常适合用于静态资源的托管。以下将

Nginx+Tomcat负载均衡、反向代理 2024-09-28 15:11

目录 一、代理 1.概述 二、Nginx反向代理 1.七层反向代理 - 动静分离

Centos下安装nginx步骤解析 2024-08-19 16:06

最近研究LNMP,首先要在linux下配置nginx服务器,话不多说,上步骤 1、编译环境gcc g++ 开发库之类的需要提前装好   yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2、首先安装PC

Nginx 反向代理和负载均衡 2024-08-19 14:21

❤之前粗略的学习了一下nginx,也能够简单的进行使用,但时间长了难免就会出现遗忘,遇到命令啥的有时候还得去网上搜,索性就自己整理了一份,以后看起来也比较方便。有什么不对的地方还请大家多多指正。 目录 一、nginx 简介 1、nginx 概述 2、正向代理 3、反向代理 4、负载均衡<

nginx: [emerg] getpwnam(“nginx“) failed in /etc/nginx/nginx.conf:1 2024-08-13 17:01

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 在 Nginx 配置文件(/etc/nginx/nginx.conf)中出现错误信息 “ngin

隐藏nginx响应头中的server信息(HTTP服务器版本信息泄漏) 2024-08-13 13:40

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 安全审计中有时会有 漏洞名称 HTTP 服务器版本信息泄漏 漏洞描述 目标服务器

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.