nginx正向代理和反向代理

devtools/2024/10/16 0:21:35/

nginx正向代理和反向代理

正向代理以及缓存配置

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

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

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

科学上网。

设置代理地址

在这里插入图片描述

修改主机二的配置文件

在这里插入图片描述

二、

主机一

在这里插入图片描述

设置页面缓存

在这里插入图片描述

IP地址

在这里插入图片描述

传参的方式体现

在这里插入图片描述

server {listen       8888;server_name  localhost;resolver 8.8.8.8 valid=300 ipv6=off;#设置dns解析地址,解析器的缓存时间300秒,每300秒重新解析一次,关闭ipv6resolver_timeout 3s;#解析超时的时间3秒proxy_read_timeout 30s;#读取代理服务器的超时时间,30s,默认是60s.proxy_send_timeout 30s;#向服务端发送数据的超时时间是30s,默认是60s.proxy_connect_timeout 30s;#和服务器建立连接的超时时间,30s,默认也是60scharset 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个,大小是4kproxy_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分钟。}

nginx反向代理

反向代理

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

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

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

​ 缓存加速

​ 安全保护

在这里插入图片描述

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

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

http模块配置的都是七层

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

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

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

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

四层转发的是内核态,内核处理,内核转发,所有速度比较快

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

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

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

反向代理=负载均衡

配置方法:

七层只能写在http模块中 命令 upstream 只能只http的大模块中,不能在serevr

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

test1 代理 【配置反向代理

test2 后台服务器

test3后台服务器

客户端就是谷歌浏览器

nginx配置文件 七层 主机一

在这里插入图片描述

在这里插入图片描述

主机二 html

主机三 html

负载均衡的算法:

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

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

2、加权轮询:在轮询的基础之上,给每个后台服务器设置不同的权重,流量的分配比不一定是按照权重比来的

权重高的被转发的概率大,权重低的相对小一点

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

weight

在这里插入图片描述

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

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

在这里插入图片描述

4、ip_hash* 怎么做会话保持?ip_hash根据算法,计算客户端IP地址的hash值,然后将请求转发到相应的服务器。

在第一次访问网站之时,就会计算出这个hash值,会把请求分配到一个服务器,但是下一个客户端如果使用相同的IP地址再次访问,

就不在分配到其他的服务器,除非后台服务器算法变更,或者后台的服务器数量发生变化,这会才会更改访问的服务器

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

根据下一次访问的地址进行固定

在这里插入图片描述

nginx当中怎么保持会话保持

ip_hash可以实现会话保持

session 动态页面里面配置会话

5、URL_hsah,根据请求的url地址来计算哈希值,然后在转发,如果每次请求的url都一样,就会被分配知道同一个服务器。

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

在这里插入图片描述

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

基于域名实现

在这里插入图片描述

主机三也要修改

主机一

在这里插入图片描述

地址映射

三台都要做映射,然后统一重启

四层代理

配置方式只能在全局模块,算法比较少,只能是ip+端口

在这里插入图片描述

在这里插入图片描述

nginx优化

location的匹配和重定向

nginx的正向代理和反向代理

Tomcat和php一样,都是处理动态页面的

Tomcat也可以作为web应用服务,开源的

php -php

tomcat -jsp

nginx -html

tomcat 使用Java代码写的程序,运用的是Java的web程序

tomcat的特点和功能

1、servlet容器:执行Java servlet 服务端的Java程序,处理客户端的http请求,以及响应

2、jsp容器:Javasever 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之间是互相独立的

在这里插入图片描述

安装Java软件包

安装环境

在这里插入图片描述

刷新升级

解包重命名移动

在这里插入图片描述

启动

tomcat目录的作用

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

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

contex.xml:host的默认配置信息

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

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

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

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

先备份 在修改

在这里插入图片描述

删掉添加 修改

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/devtools/58755.html

相关文章

Python打开Excel文档并读取数据

Python 版本 目前 Python 3 版本为主流版本,这里测试的版本是:Python 3.10.5。 常用库说明 Python 操作 Excel 的常用库有:xlrd、xlwt、xlutils、openpyxl、pandas。这里主要说明下 Excel 文档 .xls 格式和 .xlsx 格式的文档打开和读取。 …

七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境

前言 SQLite的一个重要的特性是零配置的、无需服务器,这意味着不需要复杂的安装或管理。它跟微软的Access差不多,只是一个.db格式的文件。但是与Access不同的是,它不需要安装任何软件,非常轻巧。 七天.NET 8操作SQLite入门到实战…

paddla模型转gguf

在使用ollama配置本地模型时,只支持gguf格式的模型,所以我们首先需要把自己的模型转化为bin格式,本文为paddle,onnx,pytorch格式的模型提供说明,safetensors格式比较简单请参考官方文档,或其它教…

敏捷开发笔记(第10章节)--Liskov原则(LSP)

目录 1:PDF上传链接 10.1 Liskov替换原则(LSP) 10.2 一个违反LSP的简单例子 10.6 启发式规则和习惯用法 10.7 结论 1:PDF上传链接 【免费】敏捷软件开发(原则模式与实践)资源-CSDN文库 OCP背后的主要机制是抽象(abstraction…

Debian 12更新:12.6版本发布 2024年6月29日

Debian 12更新:12.6版本发布 2024年6月29日 Debian项目很高兴地宣布其稳定发行版Debian 12(代号bookworm)的第六次更新。这个点发布主要增加了对安全问题的修正,以及对一些严重问题的调整。安全警告已经单独发布,并且…

【Linux】Linux操作系统

Linux基本指令 os概念与定位 本节内容: Linux操作系统讲解 os概念与定位 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序。总的来讲,操作系统是一款做软硬件管理的软件。 了解操作…

Flink实时开发添加水印的案例分析

在Flink中,处理时间序列数据时,通常需要考虑事件时间和水印(watermarks)的处理。以下是修改前后的代码对比分析: 修改前的代码: val systemDS unitDS.map(dp > {dp.setDeviceCode(DeviceCodeEnum.fro…

基于STM32设计的药品柜温湿度监测系统(华为云IOT)(184)

基于STM32设计的药品柜温湿度监测系统(华为云IOT)(184) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】整体需求总结【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置【3】华为云IOT手机APP界面开发思路1.3 项目开发背景【1】选题的意义【2…