nginx反向代理和负载均衡+安装jdk-22.0.2
ps -aux|grep nginx //查看进程
nginx 代理
nginx代理是负载均衡的基础
主机:192.168.118.60
这台主机只发布了web服务,没有做代理的任何操作
修改一下index.html中的内容
echo "this is java web server" > /usr/local/nginx/html/index.html

主机:192.168.118.54
echo "this is static server" > /usr/local/nginx/html/index.html
![]()
这台主机要做反向代理,当你访问54这台主机的时候,会返回60主机的内容
使用54主机代理60主机,当用户访问54的时候,54主机不响应,而是由60主机响应
使用54主机nginx反向代理60的服务器:
修改配置文件 /usr/local/nginx/conf/nginx.conf ,在配置文件中加入 location proxy_pass 协议 域名 端口

在浏览器上访问:

nginx访客IP黑名单
主机:192.168.118.70
设置除开60主机可以访问,其他主机都不可以访问
在配置文件中的server模块中设置,allow为允许,deny为禁止,可以对IP生效,也可以对网段生效
vim /usr/local/nginx/conf/nginx.conf
添加allow和deny

测试:
60主机:[root@server ~]# curl 192.168.118.70
you are luckly
54主机:[root@slave ~]# curl 192.168.118.70
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>
70主机:[root@allow ~]# curl localhost
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>
[root@allow nginx]# tail -f logs/error.log //实时更新错误日志
nginx负载均衡
默认情况下同一个文件只允许1024人访问
nginx负载均衡的基础是反向代理
让每一台主机能够获得相应的压力
负载均衡的五种策略:
轮询:默认方式,使负载大致相同
权重:weight
ip_hash:根据IP分配方式,常用在指定区域
least_conn:依据最少连接方式
url_hash:依据URL分配方式, hash $request_uri;
负载均衡状态:

准备四台服务器,54主机代理其他三台
1.192.168.118.60
2.192.168.118.70
3.192.168.118.80
4.192.168.118.54
(1)轮询:默认方式
(2)权重:weight ,数字越大,压力越大,权重默认是1,谁权重大,谁优先处理请求

(3)ip_hash

nginx平滑升级
不停用业务,使用平滑升级,需要用kill命令的支持,kill不仅仅用于杀死进程,还可以向软件进程发送信号
查看nginx的当前版本 : /usr/local/nginx/sbin/nginx -v
[root@daili ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.26.1
平滑升级到1.27,服务持续期间对nginx升级
步骤:
下载新的nginx
210 wget https://nginx.org/download/nginx-1.27.0.tar.gz
212 tar -zxvf nginx-1.27.0.tar.gz
214 cd nginx-1.27.0/
217 ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
218 make && make install
[root@daili nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx nginx.old
[root@daili nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.27.0
[root@daili nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v
nginx version: nginx/1.26.1
[root@daili nginx-1.27.0]# ps -aux|grep nginx
root 1364 0.0 0.1 46116 1144 ? Ss 15:09 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1365 0.0 0.2 46564 2132 ? S 15:09 0:00 nginx: worker process
root 4460 0.0 0.0 112824 980 pts/0 S+ 16:34 0:00 grep --color=auto nginx
[root@daili nginx-1.27.0]# kill -USR2 1364 //老版本的pid编号
[root@daili nginx-1.27.0]# ps -aux|grep nginx
root 1364 0.0 0.1 46116 1332 ? Ss 15:09 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1365 0.0 0.2 46564 2132 ? S 15:09 0:00 nginx: worker process
root 4462 0.0 0.3 46116 3320 ? S 16:37 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 4463 0.0 0.1 46568 1896 ? S 16:37 0:00 nginx: worker process
root 4466 0.0 0.0 112824 976 pts/0 S+ 16:37 0:00 grep --color=auto nginx
[root@daili nginx-1.27.0]# kill -WINCH 1365
[root@daili nginx-1.27.0]# ps -aux|grep nginx
root 1364 0.0 0.1 46116 1332 ? Ss 15:09 0:00 nginx: master process /usr/local/nginx/sbin/nginx
root 4462 0.0 0.3 46116 3320 ? S 16:37 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 4463 0.0 0.2 46568 2144 ? S 16:37 0:00 nginx: worker process
nginx 4468 0.0 0.1 46564 1888 ? S 16:39 0:00 nginx: worker process
root 4470 0.0 0.0 112824 980 pts/0 S+ 16:40 0:00 grep --color=auto nginx
[root@daili nginx-1.27.0]# kill -QUIT 1364
使用curl 查看当前服务器的版本
[root@daili nginx-1.27.0]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 30 Jul 2024 08:41:41 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 17
Last-Modified: Tue, 30 Jul 2024 07:04:55 GMT
Connection: keep-alive
ETag: "66a89097-11"
Accept-Ranges: bytes
[root@daili nginx-1.27.0]# ps -aux|grep nginx
root 4462 0.0 0.3 46116 3320 ? S 16:37 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 4463 0.0 0.2 46568 2144 ? S 16:37 0:00 nginx: worker process
root 4474 0.0 0.0 112824 980 pts/0 S+ 16:41 0:00 grep --color=auto nginx
tomcat9可以在jdk8的环境运行,tomcat10必须在jdk17以上的版本运行
配置tomcat 10运行环境时,tomcat需要jdk环境
安装jdk-22.0.2
[root@server ~]# cd jdk-22.0.2/
[root@server jdk-22.0.2]# ls
bin conf include jmods legal lib LICENSE man README release
[root@server jdk-22.0.2]# cd bin
[root@server bin]# ./java
用法:java [options] <mainclass> [args...]
[root@server ~]# mv jdk-22.0.2/ /usr/local/jdk22
[root@server ~]# cd /usr/local/jdk22
[root@server jdk22]# sed -n '$p' /etc/profile
unset -f pathmunge
[root@server jdk22]# sed -i '$aexport JAVA_HOME=/usr/local/jdk22/' /etc/profile
[root@server jdk22]# sed -n '$p' /etc/profile
export JAVA_HOME=/usr/local/jdk22/
[root@server jdk22]# source /etc/profile
[root@server jdk22]# $JAVA_HOME
-bash: /usr/local/jdk22/: 是一个目录
[root@server jdk22]# java
-bash: java: 未找到命令
[root@server jdk22]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
[root@server jdk22]# sed -n '$p' /etc/profile
PATH=$JAVA_HOME/bin:$PATH
[root@server jdk22]# source /etc/profile
[root@server jdk22]# java
用法:java [options] <mainclass> [args...]
[root@server jdk22]# java -version
java version "22.0.2" 2024-07-16
相关文章:
nginx反向代理和负载均衡+安装jdk-22.0.2
ps -aux|grep nginx //查看进程 nginx 代理 nginx代理是负载均衡的基础 主机:192.168.118.60 这台主机只发布了web服务,没有做代理的任何操作 修改一下index.html中的内容 echo "this is java web server" > /usr/local/nginx/htm…...
软考高级科目怎么选?软考高级含金量排序
软考既是国家职业资格考试,又是职称资格考试,含金量很高。软考的报考不设置任何条件,可以跨级考试,也就是非相关专业的人,也可以直接考高级。因此近些年报考软考、尤其是软考高级的人越来越多。 软考高级证书…...
【机器学习西瓜书学习笔记——模型评估与选择】
机器学习西瓜书学习笔记【第二章】 第二章 模型评估与选择2.1训练误差和测试误差错误率误差 欠拟合和过拟合2.2评估方法留出法交叉验证法自助法 2.3性能度量查准率、查全率与F1查准率查全率F1 P-R曲线ROC与AUCROCAUC 代价敏感错误率与代价曲线代价曲线 2.4比较检验假设检验&…...
vue3+cesium创建地图
1.我这边使用的是cdn引入形式 比较简单的方式 不需要下载依赖 在项目文件的index.html引入 这样cesium就会挂载到window对象上面去了 <!-- 引入cesium-js文件 --><script src"https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"…...
Zookeeper客户端和服务端NIO网络通信源码剖析
文章目录 服务端的ServerCnxFactory到底是个什么东西?ServerCnxFactory 的作用ServerCnxFactory 的实现使用 ServerCnxFactory 的示例注意事项ServerCnxFactory是什么时候完成初始化的?初始化流程代码示例详细步骤1. 创建实例2. 配置3. 启动初始化时机总结服务端基于NIO的Ser…...
从DevOps到DevSecOps是怎样之中转变?
DevSecOps是DevOps实践的自然演进,其重点是将安全集成到软件开发和部署流程中。在DevOps和DevSecOps发展之前,企业通常在在软件部署前进行集中的安全测试,导致安全介入严重滞后,漏洞分风险无法及时修复,影响上线交付。…...
ORM与第三方数据库对接的探讨及不同版本数据库的影响
对象关系映射(Object-Relational Mapping,ORM)是一种将程序中的对象与数据库中的数据进行映射的技术,使开发者可以通过操作对象来间接操作数据库。然而,在实际应用中,ORM并不是总能完美地对接陌生的第三方数…...
Windows远程桌面无法拷贝文件问题
场景说明 Winwdows远程桌面,相比Linux方便一点就是,同是windows连接,其中复制粘贴功能,可以在两个windows无缝切换。 但最近笔者远程一台测试windows服务器时,发现无法在服务器上复制内容到本地,也无法从…...
优化数据处理效率,解读 EasyMR 大数据组件升级
EasyMR 作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。此前,我们已就其展开了多方位、多角度的详尽介绍。而此次,我们成功接入了大数据组件的升级和回滚功能,能够借助 EasyMR …...
并发编程AtomicInteger详解
AtomicInteger 是 Java 并发包 (java.util.concurrent.atomic) 中的一个原子变量类,用于对 int 类型的变量进行原子操作。它利用底层的 CAS(Compare-And-Swap)机制,实现了无锁的线程安全。AtomicInteger 常用于需要高效、线程安全…...
ctfshow 权限维持 web670--web679
web670 <?php// 题目说明: // 想办法维持权限,确定无误后提交check,通过check后,才会生成flag,此前flag不存在error_reporting(0); highlight_file(__FILE__);$a$_GET[action];switch($a){case cmd:eval($_POST[c…...
职场生存指南
求职篇 面试潜台词分析 (1)介绍: “请做一下自我介绍?” ❌:慢吞吞的介绍:叫什么,来自学校,专业,工作了那几家公司。 问题目的:个人优势+岗位匹配度+个人身上技能标签 (2)反问: “你还有什么想问的吗?” 问题目的:对工作的好奇心+个人积极性<——岗位…...
Spring源码(八)--Spring实例化的策略
Spring实例化的策略有几种 ,可以看一下 InstantiationStrategy 相关的类。 UML 结构图 InstantiationStrategy的实现类有 SimpleInstantiationStrategy。 CglibSubclassingInstantiationStrategy 又继承了SimpleInstantiationStrategy。 InstantiationStrategy I…...
部署KVM虚拟化平台
文章目录 KVM虚拟化架构KVM组成KVM虚拟化三种模式 KVM虚拟化架构 KVM模块直接整合在Linux内核中 KVM组成 e KVM Driver虚拟机创建虚拟机内存分配虚拟CPU寄存器读写虚拟CPU运行 QEMU(快速仿真器) 模拟PC硬件的用户控件组件提供I/O设备模型及访问外设的途径 KVM虚拟化三种模式 客…...
Java对象模型深度剖析:从POJO到ENTITY
引言 在Java企业级应用开发中,对象模型是构建软件架构的核心。它们不仅帮助我们组织代码,还提升了代码的可读性和可维护性。本文将深入介绍Java中的几种关键对象模型:POJO、DTO、DAO、PO、BO、VO、QO和ENTITY,以及DO,…...
Nginx日志分析:编写Shell脚本进行全面日志统计
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。无论是在大流量的网站还是小型的个人博客中,Nginx都得到了广泛应用。在实际生产环境中,对Nginx日志的分析有助于我们了解网站的访问情况,发现潜在问题…...
【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下)
【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下) 大家好 我是寸铁👊 【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分…...
C语言——运算符及表达式
C语言——运算符及表达式 运算符运算符的分类(自增运算符)、--(自减运算符)赋值运算符逗号运算符(顺序求值运算符) 表达式 运算符 运算符的分类 C语言的运算符范围很宽,除了控制语句和输入输出…...
Python面试宝典第23题:分发糖果
题目 n 个孩子站成一排,给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果。 (1)每个孩子至少分配到 1 个糖果。 (2)相邻两个孩子评分更高的孩子会获得更多的糖果。 请…...
Java与模式及其应用场景知识点分享(电子版)
前言 Java 编程语言自1995年问世以来,其成功好像任何编程语言都无法媲美。生逢其时(互联网的兴起)固然是一方面的原因,而Java吸收总结了前人的经验教训,反映了最新技术(the state ofthe art),对其受到欢迎和采用,恐怕…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
