nginx反向代理和负载均衡+安装jdk-22.0.2

news2024/9/9 4:21:38

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

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

nginx平滑升级

不停用业务,使用平滑升级,需要用kill命令的支持,kill不仅仅用于杀死进程,还可以向软件进程发送信号 

常用的 -9 -15 一个是强杀,一个是正常杀
kill 信号 进程编号:
-USR2   平滑启动一个进程,平滑升级
-WINCH   优雅关闭子进程
-QUIT      优雅关闭主进程

查看nginx的当前版本  :  /usr/local/nginx/sbin/nginx -v

[root@daili ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.26.1

平滑升级到1.27,服务持续期间对nginx升级

步骤:

1. 不停止原有服务,但是必须使用原生方式启动或者更改 nginx 脚本(不建议使用脚本,会创
建一个新的进程)
2. 重新编译 nginx 新版本
3. 使用 kill -USR@ 启动新版本
4. 把旧的 Nginx 子进程全部退出
5. 优雅的退出 Nginx 的老进程 系统就只剩下新的 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

使用 kill -USR2 启用新版本的 Nginx 的软件
kill -USR2 老版本的 pid 编号
使用老的nginx进程创建新的进程

[root@daili nginx-1.27.0]# kill -USR2 1364  //老版本的pid编号
[root@daili nginx-1.27.0]# ps -aux|grep nginx  

此时会出现两套 master 进程,这个时候处理客户请求的就是新的 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
 


 


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OpenCV-Python实战项目】26-实时手部跟踪

0 介绍 目的&#xff1a;使用mediapipe库做手部的实时跟踪 检测流程&#xff1a;&#xff08;1&#xff09;手掌检测&#xff1b;&#xff08;2&#xff09;手掌特征检测 手掌特征分布&#xff1a;mediapipe手掌特征分布如下&#xff1a; 1.环境要求 后续代码运行环境&…

力扣SQL50 换座位

Problem: 626. 换座位 &#x1f468;‍&#x1f3eb; 参考题解 Code SELECT(CASEWHEN MOD(id, 2) ! 0 AND counts ! id THEN id 1WHEN MOD(id, 2) ! 0 AND counts id THEN idELSE id - 1END) AS id,student FROMseat,(SELECTCOUNT(*) AS countsFROMseat) AS seat_counts O…

电测量数据交换DLMSCOSEM组件第53部分:DLMSCOSEM应用层(中)

2.综述 (续上篇) 上篇地址:http://t.csdnimg.cn/DBKrg 2.2DLMS/COSEM应用层主要特点 2.2.1DLMS/COSEM应用层结构 DLMS/COSEM AL的主要部件是应用服务对象(ASO)。它给其服务用户提供服务(COSEM应用进程),并使用支撑层提供的服务。客户机和服务器侧都包含三个必…

Image Caption评估指标深入理解

前言&#xff1a;刚开始做图像描述的任务就整理了这些评估指标&#xff0c;时间久远有点记不清怎么具体实现原理了&#xff0c;结果面试的时候就问了这个问题&#xff0c;没答上来&#xff0c;郁闷了很久&#xff0c;还是基础不扎实&#xff0c;浅浅记录一下 文章目录 BLEUROUG…

C语言的结构体

结构体定义 结构体指针

【优选算法】滑动窗口——leetcode——串联所有单词的⼦串(hard)

目录 1.题目 2&#xff0c;算法原理 ​编辑 1.哈希表 2.left和right指针的移动 3.滑动窗口的执行次数 3.代码实现 1.C代码 2.C语言代码 4.C知识点 1. std::vector 2. std::string 3. std::unordered_map 4. 迭代器 5. 范围循环 (range-based for loop) 6. 动…

0基础学会无代码在亚马逊云科技AWS上利用LLM和智慧体(Agent)开发客服机器人

简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技大模型托管服…

【解决方法】git clone出现 curl 56 OpenSSL SSL_read: Connection was reset, errno 10054

当我们克隆别人的项目出现以下提示信息时候 remote: Enumerating objects: 7095, done. error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 error: 2292 bytes of body are still expected fetch-pack: unexpected disconnect while reading s…

Python(C++)大尺度分层边值时变图统计推理并行算法

&#x1f3af;要点 &#x1f3af;分层结构制定生成模型 | &#x1f3af;贝叶斯模型选择程序 | &#x1f3af;分层结构图的信息性 | &#x1f3af;分层模型适应实值边协变量的网络 | &#x1f3af;分层模型适应时变网络&#xff0c;划分层对应于检测变化点 | &#x1f3af;定义…

Python中15个让你代码更优雅的上下文管理器用法

文末赠免费精品编程资料~~ 今天&#xff0c;我们要探索的是Python中一个超级实用又往往被低估的特性——上下文管理器。这可不是普通的魔法&#xff0c;它能让你的代码更加整洁、安全&#xff0c;还能自动处理资源&#xff0c;就像变魔术一样。准备好&#xff0c;让我们一起揭…

一分多行列转换(Gbase版)

1、源数据表结构 CREATE TABLE "sf_ref_pd_config" ("I_BATCH_NO" decimal(5,0) DEFAULT NULL COMMENT 批次ID,"V_ASSET_CLASS_NAME" varchar(200) DEFAULT NULL COMMENT 资产类型,"N_EXEC_ID" decimal(5,0) DEFAULT NULL COMMENT 执…

pyjwt:Python 中的 JWT 处理专家

文章目录 探索 pyjwt&#xff1a;Python 中的 JWT 处理专家简介&#xff1a;为何选择 pyjwt&#xff1f;什么是 pyjwt&#xff1f;安装 pyjwtpyjwt 的基本使用1. 编码JWT2. 解码JWT3. 验证签名4. 过期时间5. 自定义头部 场景应用场景一&#xff1a;用户登录场景二&#xff1a;A…

深度学习的数据类型总结

文章目录 1.基本概念1.比特&#xff08;bit&#xff09;&#xff1a;2. **字节**&#xff08;Byte&#xff09;:2. **数据类型**: 2. 相互转化 1.基本概念 1.比特&#xff08;bit&#xff09;&#xff1a; 计算机中最小的数据存储单位&#xff0c;用 0 和 1 表示。信息传输速…

python制作一个AI聊天机器人-【python教程】教你用python制作一个AI聊天机器人,源码可分享,零基础也能实现!

要制作一个基本的AI聊天机器人&#xff0c;我们可以使用Python的多个库&#xff0c;其中一个非常流行且易于上手的是Rasa。一个简单的入门示例&#xff0c;我们可以使用pyttsx3&#xff0c;是一个Python库&#xff0c;用于将文本转换为语音。 它提供了一个简单易用的接口&#…

【ThingsBoard初体验】本地运行源码踩坑记录

前言 运行源码之前&#xff0c;请先编译源码。这很重要&#xff01;&#xff01;&#xff01; 官网源码编译教程&#xff1a;http://www.ithingsboard.com/docs/user-guide/contribution/yuanmabianyi/ 如果编译过程中出现报错&#xff0c;请看我上一篇文章&#xff1a;【Thing…

《LeetCode热题100》---<滑动窗口篇两道>

本篇博客讲解LeetCode热题100道滑动窗口篇中的两道题 第一道&#xff1a;无重复字符的最长子串 第二道&#xff1a;找到字符当中的所有字母异位词 第一道&#xff1a;无重复字符的最长子串 哈希滑动窗口 class Solution {public int lengthOfLongestSubstring(String s0) {int…

nginx出现Refused to apply inline style because it violates

Content Security Policy的错误。根据错误提示&#xff0c;nginx拒绝应用内联样式&#xff0c;因为它违反了内容安全策略&#xff08;Content Security Policy&#xff09;。内容安全策略是一种浏览器机制&#xff0c;用于防止潜在的安全漏洞&#xff0c;通过限制从外部来源加载…

初步入门C ++之继承的概念

继承 ​ 继承&#xff0c;他的功能就如同他的名字一样&#xff0c;可以继承一个类的数据和方法&#xff0c;然后增添一些自己独有的数据和方法&#xff1a; 根据我们之前讲解初步入门C之类的例子&#xff0c;假如我们现在有一个长方体的类&#xff0c;它和长方型类唯一不一样…

屏幕录制与视频编辑的新纪元Camtasia Studio 2024

在数字化时代&#xff0c;视频已成为我们日常工作和生活中不可或缺的一部分。无论是教育、培训、营销还是娱乐&#xff0c;高质量的视频内容都发挥着至关重要的作用。而提到屏幕录制和视频编辑软件&#xff0c;Camtasia Studio无疑是一个家喻户晓的名字。随着2024年新版本的发布…