nginx的反向代理及负载均衡

nginx的反向代理

安装包链接https://nginx.org/download/nginx-1.26.1.tar.gz

yum -y install gcc gcc-c++ pcre-devel openssl-devel
[root@staticserver ~]# tar -xzvf nginx-1.26.1.tar.gz 
[root@staticserver nginx-1.26.1]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream

[root@staticserver nginx-1.26.1]# make && make install
[root@staticserver nginx-1.26.1]# useradd -s /bin/nologin -M nginx
不用使用systemctl启动,也不要使用脚本启动

[root@model nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@model nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf

复制43-46到47,进行修改:


[root@model nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload

将当前的主机作为前端服务器,用于接收和响应客户端,代理另外一台主机,克隆一台主机。

修改index.html文件,并且发布web服务

[root@dynamicserver ~]# echo "this is java web srver " > /usr/local/nginx/html/index.html 

启动nginx服务

[root@dynamicserver ~]# /usr/local/nginx/sbin/nginx 

使用curl 访问当前项目

[root@dynamicserver ~]# curl localhost
this is java web srver 

由于没有部署tomcat服务,所以使用nginx代替

切换到静态主机

修改nginx中的html文件

[root@staticserver ~]# echo "this is static server " > /usr/local/nginx/html/index.html 
[root@staticserver ~]# /usr/local/nginx/sbin/nginx         启动nginx

[root@staticserver ~]# ps -aux| grep nginx        查看进程

[root@staticserver ~]# curl localhost
this is static server 
[root@staticserver ~]# curl 192.168.2.40        访问40主机
this is java web srver 

使用39主机代理40主机,当用户访问39的时候,39主机不响应,而是由40主机响应

使用39主机nginx反向代理40的服务器

location proxy_pass 协议 域名 端口

修改配置文件[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

46行

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload
访问192.168.2.40,代理192.168.2.39

现在的静态服务器实际上是代理服务器,nginx代理其他服务的时候,不需要对方同意,更加方便了模块化操作(如果代理服务器,阿双方都需要同意,之前的依赖太高,不便于模块化操作)

总结:

1.一班来说使用nginx代理动态服务器,例如代理tomcat发布的web服务

2.在这个案例中是使用nginx代替的

3.nginx反向代理,是不需要被代理的服务同意的,只需要在nginx中location中配置

./sbin/nginx -s reload         重载配置文件

负载均衡的基础

白名单,黑名单

再克隆一台机器allow,安装步骤如上

[root@allow nginx-1.26.1]# /usr/local/nginx/sbin/nginx 
[root@allow nginx-1.26.1]# echo "you are lucky" > /usr/local/nginx/html/index.html 
[root@allow nginx-1.26.1]# curl localhost
you are lucky
在192.168.2.40主机访问,可以访问到

[root@dynamicserver ~]# curl 192.168.2.41
you are lucky
设置192.168.2.40主机可以访问,其他主机不能访问

在配置文件中中的server模块中设置

allow 允许

deny 禁止

可以对ip生效,也可以对网段生效
[root@allow nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf

[root@allow nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload

访问:


 

初始安装nginx的时候 logs 日志文件

[root@allow nginx-1.26.1]# cd /usr/local/nginx/
[root@allow nginx]# tree logs/
logs/
├── access.log
├── error.log
└── nginx.pid

0 directories, 3 files

[root@allow nginx]# cat access.log        用户访问的信息

[root@allow nginx]# cat logs/error.log         访问报错的信息

负载均衡

准备四台机器,安装nginx,并且启动nginx

修改static主机的配置文件

[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf

[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

权重

ip_hash
当对后端的多台动态应用服务器做负载均衡时, ip_hash 指令能够将某
个客户端 IP 的请求通过哈希算法定位到同一台后端服务器上。
这样,当来自某一个 IP 的用户在后端 Web 服务器 A 上登录后,再访问该
站点的其他 URL ,能保证其访问的还是后端 web 服务器 A
注意 : 使用 ip_hash 指令无法保证后端服务器的负载均衡,可能导致有些
后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置
后端服务器权重等方法将不起作用
least_conn
least_conn :最少连接,把请求转发给连接数较少的后端服务器。轮询
算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,
有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况
下, leastconn 这种方式就可以达到更好的负载均衡效果。
url_hash
按访问 url hash 结果来分配请求,使每个 url 定向到同一个后端服务
器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的
服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时
间的浪费。而使用 ur_hash ,可以使得同一个 url ( 也就是同一个资源请
) 会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从
缓存中读取。

平滑升级

服务持续期间对nginx升级

下载新的nginx

  338  wget https://nginx.org/download/nginx-1.27.0.tar.gz
  339  tar -zxvf nginx-1.27.0.tar.gz 
  340  cd nginx-1.27
  341  cd nginx-1.27.0
  343  ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
  344  make && make install

[root@staticserver nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx  nginx.old
[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.27.0
[root@staticserver nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v
nginx version: nginx/1.26.1
  349  ps -aux | grep nginx
  350  kill -USR2 4636
  351  ps -aux | grep nginx
  352  kill -USR2 1367
  353  ps -aux | grep nginx
  354  kill -WINCH 4636
  355  kill -QUIT 1367
  356  ps -aux | grep nginx

还可以访问到页面,升级成功

配置tomcat10

必须在jdk17以上的版本运行

在实际的工作中,不需要这么高的版本,在实训,要求使用新版本,新版本,我们使用新版本,是为了让大家指定各个程序之间版本依赖管理

  321  wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz
  322  tar -zxvf jdk-22_linux-x64_bin.tar.gz
  323  ls
  324  cd jdk-22.0.2/
  326  cd bin/
  327  ./java
  330  cd
  331  mv -r jdk-22.0.2/ /usr/local/jdk22/
  332  mv  jdk-22.0.2/ /usr/local/jdk22/
  333  ls /usr/local/jdk22/
  334  ls
  335  cd /usr/local/jdk22/
  336  pwd
  337  sed -n '$p' /etc/profile
  338  sed -i '$aexport JAVA_HOME=/usr/local/jdk22' /etc/profile
  339  sed -n '$p' /etc/profile
  340  source /etc/profile
  341  $JAVA_HOME
  342  vim /etc/profile
  343  java
  344  sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
  345  sed -n '$p' /etc/profile
  346  java -version
[root@dynamicserver ~]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Graph RAG:知识图谱赋能大语言模型的新范式

一、前言 大模型技术在经过一年多的飞速迭代和发展,以 ChatGPT 为代表的大语言模型(LLM)凭借其强大的文本生成能力,在各个领域掀起了一场 AI 应用的革命。然而,狂欢过后,人们逐渐意识到 LLM 并非无所不能。…

时常在面试中被问到的JVM问题

文章目录 JVM 和 JDK、JRE 有什么区别?JVM 是如何工作的?JVM 主要组件JVM 执行流程JVM 的工作示例 说一下类加载机制类加载器(Class Loader)示例 什么是双亲委派模型?(Parent Delegation Model)…

cookie与session的关系

登录时:存入redis的格式是key:value 登录时的session 再次请求时:查询请求头中带了cookie的session是和登录时第一次的一致,不管是第几个请求,和缓存的cookie的session做对比 退出时--依然会带着这个sessionid 1.cookie和session: 客户端--------------------企业代…

跨平台AI模型部署神器:FastDeploy实战Yolov5

简介 FastDeploy 是一款易用、高效的 AI 模型部署工具。 它旨在简化 AI 模型从训练到部署的整个流程,支持在多种硬件和操作系统上进行模型推理。 特点如下: 多平台支持 : FastDeploy 支持在云、边、端等多种环境中部署模型,包括但不限于 Windows、Linux、Android、iOS …

短剧出海分销推广系统,海外短剧CPS分润机制方案介绍

随着国内短剧市场的蓬勃发展,其独特的叙事风格和快节奏的内容形式不仅在国内赢得了广泛好评,更逐渐跨越国界,吸引了全球观众的关注。海外短剧系统CPS分销推广是一种创新的营销模式,它主要依靠按销售分润(Cost Per Sale…

2024 Java 高分面试宝典 一站式搞定技术面

前言 每年9月和10月,被业界称为“金九银十”,这是人才市场一年中最活跃的时期。此时,企业为了来年的业务扩展,纷纷加大招聘力度,空缺岗位众多,招聘需求集中。同时,初秋的招聘活动也避开酷暑&am…

中间件安全:Nginx 解析漏洞测试.

中间件安全:Nginx 解析漏洞测试. Nginx 是一个高性能的 HTTP和 反向代理服务器,Nginx 解析漏洞是一个由于配置不当导致的安全问题,它不依赖于Nginx或PHP的特定版本,而是由于用户配置错误造成的。这个漏洞允许攻击者上传看似无害的…

git的配置使用

第三周 Tursday 早 git日志的安装使用 [rootweb ~]# yum -y install git.x86_64 //安装软件包 [rootweb ~]# rpm -ql git //查看git的包 ​ [rootweb ~]# mkdir /yy000 //创建新目录 [rootweb ~]# cd /yy000/ [rootweb yy000]# git init //将当前目录做为仓库…

ubuntu 查找文件find

find -name xxx 查找当前路径下名字为xxx的文件 find . -name xxx 查找当前路径下名字为 train_logs的文件 find . -name train_logs 具体说明 【Ubuntu】find命令_ubuntu find命令-CSDN博客 其中,路径 指定要搜索的目录路径,而 表达式 用于指定匹配条…

PHP进阶-CentOS7部署LNMP服务架构的项目

在开发和部署Web应用时,LNMP(Linux、Nginx、MySQL、PHP)的组合是非常常见的。这篇博客将介绍如何通过一个简单的脚本,在CentOS 7上部署LNMP,并将PHP项目自动部署到服务器上。这不仅可以节省大量的时间,还能…

Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT

为什么打开手机的WiFi连接,显示的是WLAN? 分清Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT这些概念. 一、WLAN、WIFI、WAPI WLAN是利用无线通信技术在局部区域内构建的网络,家庭/办公室里的网络就是一个WLAN,WLAN是一…

【城市数据集】世界城市数据库和访问门户工具WUDAPT

世界城市数据库和访问门户工具WUDAPT WUDAPTLCZ分类具体步骤参考 在 城市气候研究中,用于描述城市特征的数据集一般采用基于类别的传统方法,将城市地区分为数量有限的类型,从而导致精确度下降。越来越多的新数据集以亚米微尺分辨率描述城市的…

SolidEdge二次开发(C#)-环境配置

文章目录 1、前言2、环境配置2.1 安装Solidworks20242.2 安装VS20222.3 查看Com组件2.3.1 在VS2022中创建一个wpf工程项目2.3.2 添加com组件 1、前言 SolidEdge是Siemens PLM Software公司旗下的三维CAD软件,采用Siemens PLM Software公司自己拥有专利的Parasolid作…

JAVA零基础学习3(Scanner类,字符串,StringBuilder,StringJoinder,ArrayList成员方法)

JAVA零基础学习3 Scanner类输入示例代码代码解释完整代码1. 读取字符串2. 读取整数3. 读取浮点数4. 读取布尔值5. 读取单个单词6. 读取长整型数7. 读取短整型数8. 读取字节数注意事项总结 API 字符串解释示例解释解决方法示例:使用 StringBuilder String…

Java代码基础算法练习-求一个3×3矩阵对角线元素之和-2024.07.27

任务描述: 求一个33矩阵对角线元素之和,包括主对角线、副对角线元素和 (提示:主对角线: ij,副对角线:ij2)。 解决思路: 定义 3*3 的二维数组,再输入9个数字&#xff0c…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十四)-租云服务器及配环境、docker基本命令

主要介绍了租云服务器和docker配置、基本命令!!! 文章目录 前言 一、云平台 二、租云服务器及安装docker 1.阿里云 2.安装docker 三、docker命令 将当前用户添加到docker用户组 镜像(images) 容器(container) 四、实战…

linux编写shell脚本字段部署redis6.x版本,docker使用shell脚本一键自动部署redis

1.先创建部署脚本 touch redis.sh2.粘贴部署脚本内容到redis.sh echo "在线安装redis开始...." docker pull redis:6.2.1 sudo mkdir -p /home/admin/redis/{data,conf} sudo touch /home/admin/redis/conf/redis.conf echo " #注释掉这部分,这是限…

一文总结代理:代理模式、代理服务器

概述 代理在计算机编程领域,是一个很通用的概念,包括:代理设计模式,代理服务器等。 代理类持有具体实现类的实例,将在代理类上的操作转化为实例上方法的调用。为某个对象提供一个代理,以控制对这个对象的…

基于FPGA的数字信号处理(20)--半加器和全减器

1、前言 既然有半加器和全加器,那自然也有半减器和全减器了。尽管在电路中减法的实现基本都是 补码 加法 的形式,但是正所谓技多不压身,了解一下半减器和全减器还是有一定作用的,至少能扩宽知识面嘛。 2、半减器 最简单的减法器叫…

RESNET

ResNet 文章目录 ResNet主要内容开发背景解决两个问题:1. 梯度消失和梯度爆炸2. 退化问题: 解决方法1. BN(Batch Normalization)层2. 残差块 Pytorch实现BasicBlockBottleNeckResNet 主要内容 开发背景 残差神经网络(ResNet)是由微软研究院…