nginx的正向代理和反向代理以及tomcat

nginx的正向代理和反向代理:

正向代理以及缓存配置:

代理:客户端不再是直接访问服务端,通过代理服务器访问服务端。

正向代理:面向客户端,我们通过代理服务器的IP地址访问目标范围端。

服务端只知道代理服务器的地址,真正的客户端ip可以隐藏。

科学上网。

server {
        listen       8888;
        server_name  localhost;
        resolver 8.8.8.8 valid=300 ipv6=off;
        #设置dns解析地址,解析器的缓存时间300秒,每300秒重新解析一次,关闭ipv6
        resolver_timeout 3s;
        #解析超时的时间3秒
        proxy_read_timeout 30s;
        #读取代理服务器的超时时间,30s,默认是60s.
        proxy_send_timeout 30s;
        #向服务端发送数据的超时时间是30s,默认是60s.
        proxy_connect_timeout 30s;
        #和服务器建立连接的超时时间,30s,默认也是60s
        charset utf-8;
​
        #access_log  logs/host.access.log  main;
​
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  $scheme://$http_host$request_uri;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Port $server_port;
            #需要把客户端的真实ip,客户端的主机名,客户端的请求方式,服务端的端口,真实的ip地址添加在请求头当中
           # 请求转发到$url的地址,通过代理服务器地址可以直接访问百度 http://$url:端口
           # 设置页面的缓存:
            proxy_buffers 256 4k;
           #设置缓冲区为256个,大小是4k
            proxy_max_temp_file_size 0;
           # nginx服务器做为代理的时候暂时存放的响应数据的最大临时文件的大小为0,不使用临时文件
            proxy_cache_valid 200 302 1m;
           #当状态吗是200和302时,缓存的有效期是1分钟
            proxy_cache_valid 301 1h;
           #当状态吗是301,缓存的有效期是1小时
            proxy_cache_valid any 1m;
           #除了上述的三个状态吗,其他的缓存保存时间1分钟。
        }

反向代理:(负载均衡)

正向代理我们是知道代理服务器的地址,也知道我们访问的web服务器

反向代理客户端还是访问的代理地址,但是具体的访问web服务器是哪一台,我们并不知道。

作用:请求分配到多个后台服务器上,分担服务器的负载,提供系统的可用性和稳定性。

缓存加速

安全保护

四层代理和七层代理之间的区别:

正向代理,http模块的server和location。

http模块配置的都是七层

7层是应用层,使用的是http协议,可以对请求进行解析和处理,7层代理走的是用户态,应用协议和程序功能。

7层的处理速度写的比较慢,但是可以提供更高级的功能和更好的用户体验。

既可以是域名也可以是ip加端口。

四层是传输层,ip+端口,请求转发到后端,无法对请求进行深入的解析和处理。只是对请求流量的转发。

四层转发是内核态,内核处理。内核转发,所以速度较快。

应用场景:7层代理,一般都是对外提供访问,需要对请求进行处理,包括安全,过滤,流量控制。

四层代理,一般都是内部使用,不需要对流量,请求做特殊处理。

配置方法以及负载均衡的算法。

反向代理=负载均衡

配置方法:

七层只能写在http模块当中,命令upstream,只能在http的大模块中,不能在server,也不能在location中。

四层只能写在全局配置当中,不能写在http模块当中 命令stream

test3 192.168.60.30 代理 ------配置反向代理

test4 192.168.60.40 后台服务器

test5 192.168.60.50 后台服务器

负载均衡的算法:

1、轮询 round robin rr : 轮询算法是最简单也是最基础的算法,也是默认速发。请求轮流分配到后端服务器。

轮询算法适用与后端服务器处理能力相同的情况,访问量不大的情况。默认算法,可以不加。

2、加权轮询:在轮询的基础上,给每个后台服务器设置不同的一个权重。流量的分配不一定是按照权重比来,权重高的被转发的概率大,权重低的相对较小。

后端的服务器的性能有差异,性能高,权重相对更高,性能低,权重相对小一点。

weight。

3、最小连接数算法,least_conn 会把请求发送到当前连接数较少的后端服务器上。

后端服务器处理任务耗时不同的情况,可以避免请求集中在处理能更强的服务器上。

4、 ip_hash* 怎么做会话保持?

ip_hash根据算法,计算客户端的ip地址的hash值,然后请求转发到相应的服务器。在第一次访问网站之时,就会计算出这个hash值,会把请求分配到一个服务器,都是下一次客户端如果使用相同的ip地址再次访问,就不会再分配到其他的服务器。除非后台服务器的算法变更,或者后台服务器的数量发生了变化。这时才会更改访问的服务器。

适用场景,高并发。如果说客户端进来之后,不停的轮换服务器,反而会加重服务器的负担,固定在一台服务器上,降低了代理服务器的压力,同时也节约了资源。

nginx当中怎么实现会话保持?

ip_hash可以做会话保持

session 动态页面里面配置会话。

5、URL_hash 根据请求的url地址来计算hash值,然后再转发,如果每次请求的url都一样,就会被分配到同一个服务器。

转发的地址发送变化,后台服务器清理缓存或者后台服务器的数量发生变化。

以上都是在7层当中使用的,四层没有ip_hash和url_hash的算法。

基于域名实现负载均衡

四层代理:只能在全局模块,算法比较少,只能是ip+端口

nginx的优化

nginx的location的匹配和优先级以及重定向

nginx的正向代理和反向代理

tpmcat

tomecat和php一样,都是用来处理动态页面的。

tomcat也可以作为web应用服务器,开源的。

php .php

tomcat .jsp

nginx .html

tomcat是用Java代码写的程序,运行的是Java大web应用程序。

tomcat的特点和功能:

1、serclet容器:执行java servlet,是一种服务端的java程序,处理客户端的http请求,以及响应。

2、jsp容器,javaserver page,这是一种动态页面的技术,可以在html的页面里面嵌入java代码。

3、自身也是一个http服务器

4、tomcat是一个轻量级的动态页面处理程序,高并发场景不适用。

优化,tomcat自身的优化,以及系统的内核优化,jvm优化。

servlet:

是java语言当中用来开发web应用程序的关键组件。

处理http请求,生成动态内容,以及响应客户端的请求。

处理http请求

生成动态内容

处理java的业务逻辑

会话管理,保持用户的状态信息,购物车同步,用户登录等等。

也可以转发nginx的动态请求到数据库。

jsp:

web应用程序的界面,这个界面的语言是用java实现的。

.jsp为结尾的文件

index.jsp

tomcat的组件:

connector:负责对外接受和响应请求,它是tomcat与客户端沟通的一个枢纽,监听端口接收外界请求。

端口:8080

接收到了请求之后,传递给其他组件进行处理,处理完成之后回到connector,再响应客户端。

container:负责处理业务逻辑,engine host context wrapper四个功能组成

engine:用来管理多个虚拟主机。

host :一个host就是一个主机,也可以叫站点,通过配置host,也可以添加多个站点

context:一个context代表一个web应用

wrapper:封装器,负责处理最底层的逻辑。

service:对外提供外部服务,包含connector和container

tomcat可以有多个service。每个service之间互相是独立的。

工作流程

tomcat目录的作用:

1、bin 存放启动和关闭tomcat脚本的文件。startup.sh shutdow.sh

2、conf 存放tomcat的主配置文件,werver.xml主配置文件

context.xml host的默认配置信息

tomcat-user.xml 登录时认证用户和密码的相关信息,manager文件必须要赋权修改之后才能打开

lib tomcat运行时需要的jar包。一般不动

logs 日志文件,catalina.out 主日志文件。

temp 存放tomcat运行时产生的文件。

webapps 部署web应用的目录,类似于nginx的html

操作:

1、将压缩包拖入opt目录下

[root@test5 opt]# rz -E
rz waiting to receive.
[root@test5 opt]# rz -E
rz waiting to receive.
[root@test5 opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm

2、关闭防火墙

[root@test5 opt]# systemctl stop firewalld
[root@test5 opt]# setenforce 0

3、设置jdk环境变量

[root@test5 opt]# rpm -ivh jdk-8u201-linux-x64.rpm

4、创建java.sh

[root@test5 opt]# vim /etc/profile.d/java.sh
​
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@test5 opt]# source /etc/profile.d/java.sh 
[root@test5 opt]# java -version
java version "1.8.0_201"

5、解压压缩包

[root@test5 opt]# tar -xf apache-tomcat-9.0.16.tar.gz 
[root@test5 opt]# ls
apache-tomcat-9.0.16         jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz
[root@test5 opt]# mv apache-tomcat-9.0.16 tomcat
[root@test5 opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm  tomcat
[root@test5 opt]# mv tomcat/ /usr/local/
[root@test5 opt]# cd /usr/local/tomcat/

6、启动配置文件

[root@test5 opt]# cd /usr/local/tomcat/bin
[root@test5 bin]# ./startup.sh
[root@test5 bin]# netstat -antp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      18565/java   

7、更改manager app的配置文件

[root@test5 tomcat]# cd webapps/
[root@test5 webapps]# cd manager/META-INF/
[root@test5 META-INF]# vim context.xml
 20          allow=".*" />

8、更改账户密码

[root@test5 manager]# cd /usr/local/tomcat/conf/
[root@test5 conf]# vim tomcat-users.xml
              version="1.0">
              <role rolename="manager-gui"/>
              <user username="tomcat" password="tomcat" roles="manager-gui"/>   

9、重新启动配置文件

[root@test5 bin]# ./shutdown.sh 
[root@test5 bin]# ./startup.sh
[root@test5 bin]# netstat -antp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      11596/java          
tcp6       0      0 ::1:39588               ::1:8080                TIME_WAIT   - 
配置tomcat的虚拟主机

1、创建工作目录

[root@test5 tomcat]# cd webapps/
[root@test5 webapps]# mkdir xy102
[root@test5 webapps]# mkdir benet

2、设置访问页面

[root@test5 xy102]# vim index.jsp
this is xy102 page\!
[root@test5 webapps]# cd benet/
[root@test5 benet]# echo "this is benet page\!" > index.jsp

3、将主配置文件备份

[root@test5 tomcat]# cd conf/
[root@test5 conf]# cp server.xml server.xml.bak

4、更改主配置文件

[root@test5 conf]# vim server.xml
147         <Host name="www.xy102.com" appBase="webapps" unpackWARs="tr    ue" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="fals    e">
148         <Context docBase="/usr/local/tomcat/webapps/xy102" path=""     reloadable="true" />
149         </Host>   
150 <Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
151         <Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />

5、重启服务

[root@test5 bin]# ./shutdown.sh 
[root@test5 bin]# ./startup.sh 

6、做端口映射

[root@test5 bin]# vim /etc/hosts
192.168.60.50 www.xy102.com www.benet.com

7、结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

绝区叁--如何在移动设备上本地运行LLM

随着大型语言模型 (LLM)&#xff08;例如Llama 2和Llama 3&#xff09;不断突破人工智能的界限&#xff0c;它们正在改变我们与周围技术的互动方式。这些模型早已集成到我们的手机中&#xff0c;但到目前为止&#xff0c;它们理解和处理请求的能力还非常有限。然而&#xff0c;…

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)

目录 一、前言 二、什么是C模板&#xff1f; &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ &#x1f525;非类型模板参数的定义 &#x1f525;非类型模板参数的两种类型 &#x1f52…

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天&#xff0c;有个房间湿度很大&#xff0c;而我需要远程查看温湿度&#xff0c;所以无所谓有没有显示屏&#xff0c;某宝上的温湿度计都是带屏的&#xff0c;如果连WIFI查看温湿度操作也比较麻烦&#xff0c;还需要换电池&#xff0c;实在不能满足我的需求&#xff0…

剖析DeFi交易产品之UniswapV3:交易路由合约

本文首发于公众号&#xff1a;Keegan小钢 SwapRouter 合约封装了面向用户的交易接口&#xff0c;但不再像 UniswapV2Router 一样根据不同交易场景拆分为了那么多函数&#xff0c;UniswapV3 的 SwapRouter 核心就只有 4 个交易函数&#xff1a; exactInputSingle&#xff1a;指…

Vue进阶(四十五)Jest集成指南

文章目录 一、前言二、环境检测三、集成问题汇总四、拓展阅读 一、前言 在前期博文《Vue进阶&#xff08;八十八&#xff09;Jest》中&#xff0c;讲解了Jest基本用法及应用示例。一切顺利的话&#xff0c;按照文档集成应用即可&#xff0c;但是集成过程中遇到的问题可能五花八…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第55课-芝麻开门(语音 识别 控制3D纪念馆开门 和 关门)

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第55课-芝麻开门&#xff08;语音识别控制3D纪念馆开门和关门&#xff09; 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtn…

KVM使用命令行添加新磁盘(注:支持热插拔)

1、使用qemu-img创建格式为qcow2的磁盘 [rootkvm ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/test-disk.qcow2 15G 2、显示虚拟机硬盘列表&#xff0c;查看未使用的target [rootkvm ~]# virsh domblklist kvm-client 3、添加硬盘到kvm-client虚拟机中 [rootkvm…

SpringBoot | 大新闻项目后端(redis优化登录)

该项目的前篇内容的使用jwt令牌实现登录认证&#xff0c;使用Md5加密实现注册&#xff0c;在上一篇&#xff1a;http://t.csdnimg.cn/vn3rB 该篇主要内容&#xff1a;redis优化登录和ThreadLocal提供线程局部变量&#xff0c;以及该大新闻项目的主要代码。 redis优化登录 其实…

html+css+js图片手动轮播

源代码在界面图片后面 轮播演示用的几张图片是Bing上的&#xff0c;直接用的几张图片的URL&#xff0c;谁加载可能需要等一下&#xff0c;现实中替换成自己的图片即可 关注一下点个赞吧&#x1f604; 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…

C++继承初识

一。继承 1.继承本质是复用相同的代码&#xff08;属性&#xff09; 2.格式&#xff1a;class 类名&#xff1a;继承方式 父类 3.继承方式的规律&#xff1a; 父类的&#xff1a; 对于私有成员&#xff0c;不管哪种继承方式都不可见--->不想被子类继承的成员 对于保护…

代码随想录——划分字母区间(Leetcode763)

题目链接 贪心 class Solution {public List<Integer> partitionLabels(String s) {int[] count new int[27];Arrays.fill(count,0);// 统计元素最后一次出现的位置for(int i 0; i < s.length(); i){count[s.charAt(i) - a] i;}List<Integer> res new Ar…

非对称加密算法原理与应用2——RSA私钥加密文件

作者:私语茶馆 1.相关章节 (1)非对称加密算法原理与应用1——秘钥的生成-CSDN博客 第一章节讲述的是创建秘钥对,并将公钥和私钥导出为文件格式存储。 本章节继续讲如何利用私钥加密内容,包括从密钥库或文件中读取私钥,并用RSA算法加密文件和String。 2.私钥加密的概述…

JDK都出到20多了,你还不会使用JDK8的Stream流写代码吗?

目录 前言 Stream流 是什么&#xff1f; 为什么要用Steam流 常见stream流使用案例 映射 map() & 集合 collect() 单字段映射 多字段映射 映射为其他的对象 映射为 Map 去重 distinct() 过滤 filter() Stream流的其他方法 使用Stream流的弊端 前言 当你某天看…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存&#xff0c;相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

跨平台Ribbon UI组件QtitanRibbon全新发布v6.7.0——支持Qt 6.6.3

没有Microsoft在其办公解决方案中提供的界面&#xff0c;就无法想象现代应用程序&#xff0c;这个概念称为Ribbon UI&#xff0c;目前它是使应用程序与时俱进的主要属性。QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件&#xff0c;QtitanRibb…

vue3【实战】来回拖拽放置图片

效果预览 技术要点 img 标签默认就是可拖拽的&#xff08;a 标签也是&#xff09;事件 e 内的 dataTransfer 对象可用于临时存储事件过程中的数据拖拽事件的默认行为是用浏览器新开页签打开被拖拽对象&#xff0c;所以通常需要禁用默认的浏览器行为被拖拽元素必须设置 id&#…

拉曼光谱入门:2.拉曼光谱发展史、拉曼效应与试样温度的确定方法

1.拉曼光谱技术发展史 这里用简单的箭头与关键字来概括一下拉曼光谱技术的发展史 1928年&#xff1a;拉曼效应的发现 → 拉曼光谱术的初步应用20世纪40年代&#xff1a;红外光谱术的发展 → 拉曼光谱术的限制20世纪60年代&#xff1a;激光作为光源的引入 → 拉曼光谱术的性能提…

阿里云人工智能平台PAI部署开源大模型chatglm3之失败记录

想学习怎么部署大模型&#xff0c;跟着网上的帖子部署了一个星期&#xff0c;然而没有成功。失败的经历也是经历&#xff0c;记在这里。 我一共创建了3个实例来部署chatglm3&#xff0c;每个实例都是基于V100创建的&#xff08;当时没有A10可选了&#xff09;&#xff0c;其显…

数据库缓存管理

1. 简介 缓存管理器是数据库管理系统&#xff08;DBMS&#xff09;中负责管理内存中page并处理文件和索引管理器的page请求的组件。由于内存空间有限&#xff0c;我们不能将所有page存储在缓存池中。因此&#xff0c;缓存管理器需要制定替换策略&#xff0c;当空间填满时选择哪…

rider使用libman

问题 rider没有libman的相关功能&#xff0c;需要使用cli 安装Libman dotnet tool install -g Microsoft.Web.LibraryManager.Cli # 如果存在可以尝试更新 dotnet tool update -g Microsoft.Web.LibraryManager.Cli查看命令 libman --help初始化 cdnjs官网 libman init安…