nginx正向代理和反向代理
正向代理以及缓存配置
代理:客户端不再是直接访问服务器,通过代理服务器访问服务端。
正向代理:面向客户端,我们通过代理服务器的IP地址访问目标服务端。
服务端只知道代理服务器的地址,真正的客户端ip可以隐藏
科学上网。
设置代理地址
修改主机二的配置文件
二、
主机一
设置页面缓存
IP地址
传参的方式体现
bash
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分钟。
}
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
先备份 在修改
删掉添加 修改