先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
if( -f $request_filename) {
break;
}
if( !-e $request_filename) {
rewrite ^(.*)$ /index.php/$1last;
break;
}
}
location ~ .+.php($|/) {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^((?U).+.php)(/
?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED d o c u m e n t r o o t document_root documentrootfastcgi_path_info;
fastcgi_param SCRIPT_FILENAME r o o t root rootfastcgi_script_name;
include fastcgi_params;
}
}
永久重定向与临时重定向的区别
临时重定向redirect,永久重定向permanent
301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。
302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。
实施301后,新网址完全继承旧网址,旧网址的排名等完全清零。
实施302后,对旧网址没有影响,但新网址不会有排名。
302每次用户请求都会访问一次服务器,并返回给用户,301用户请求后将永久重定向缓存,再次请求直接在本地重定向不会经过服务器。
负载均衡与反向代理
反向代理是负载均衡的一种方式
反向代理可以实现负载均衡 但是负载均衡不一定通过反向代理的方式来实现
反向代理也可以不做负载均衡 可以做客户端与web服务器之间的缓存服务器
squid varnish这些反向代理一般做缓存
nginx反向代理一般做负载均衡
负载均衡也可以通过LVS非反向代理的方式来实现 通过ip和端口实现负载均衡
NGINX反向代理缓存
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理的作用
①保护网站安全:任何来自Internet的请求都必须先经过代理服务器。
简单来说,就是我们网站的所有的请求都要经过反向代理服务器,对反向代理服务器进行安全加固就能解决很大一部分的安全问题。
②通过配置缓存功能加速Web请求:可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;
可以在反向代理的服务器上缓存某些静态资源,这样的话在反向代理服务器上存在的资源就不用去web服务器上获取,以减轻web服务器的压力。
③实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;
可以通过反向代理服务器把请求分发到不同服务器,减轻服务器的压力,还能防止网站某一台服务器挂掉之后,网站就无法访问的问题,做到网站的高可用,减少事故的发生。
反向代理缓存设置
一、在反向代理服务器的配置文件中加入:
位置:
http段内
proxy_temp_path /data/nginx-temp;#缓存临时文件路径
proxy_cache_path /data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m
max_size=50m inactive=1m;#缓存保存的路径
levels指定该缓存空间有两层hash目录,第一层目录为1个数字或者字母,第二层为2个数字或者字母
keys_zone指的是缓存空间名称。 20m 为内存缓存空间大小
max_size指的是缓存文件可以占用的最大空间。
inactive指的是如果一个缓存文件多长时间不被访问,就会被删除。(天:d、秒:s、分:m)
- 配置的demo
//设置动态服务器的代理 【处理PHP任务】
upstreamtest {
#ip_hash; #[ 使用ip_hash分发 ]
server192.168.1.254:81weight=2;#[ 设置这个服务器的权重为2 ]
server192.168.1.254:82;
}
//设置获取静态文件的代理
upstreamstatic{
server192.168.1.254:81;#[ 静态服务器 ]
}
设置缓存目录
proxy_temp_path /data/nginx-temp;#[temp的目录]
proxy_cache_path /data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m max_size=50m inactive=1m;
[ 设置缓存的路径为 /data/nginx-cache 层级为2级,第一级为1个字幕第二个为2个字母 缓存的空间名为 nginx-cache,缓存的内存空间为20M 最大空间为50M 1分钟内没有访问删除这个缓存 ]
END
server{
listen80;
server_name_;
access_loglogs/likang.default.access.log main;
error_loglogs/error.logerror;
root/var/www/html/likang/default;
设置反向代理
location/{
proxy_passhttp://test;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
}
设置静态图片
1location~.*.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
#root /data/nginx-cache; #[ 图片的根目录 ]
proxy_redirectoff;#[关闭跳转]
proxy_set_headerHost$host;#[ 设置header ]
proxy_cachenginx-cache;#[ 缓存的空间 – 上边定义的 ]
proxy_cache_valid2003021h;#[ 不同http状态缓存时间不同 ]
proxy_cache_valid3011d;
proxy_cache_validany1m;
proxy_ignore_headersSet-Cookie Cache-Control;
proxy_hide_headerCache-Control;
proxy_hide_headerSet-Cookie;
expires30d;#[告诉浏览器缓存有效期 – 30天内可以直接访问浏览器缓存 ]
proxy_passhttp://static;#[文件不存在去那里获取]
}
}
解决不缓存的问题:
nginx不缓存原因
默认情况下,nginx是否缓存是由nginx缓存服务器与源服务器共同决定的, 缓存服务器需要严格遵守源服务器响应的header来决定是否缓存以及缓存的时常。header主要有如下:
Cache-control:no-cache、no-store
如果出现这两值,nginx缓存服务器是绝对不会缓存的
Expires:1980-01-01
如果出现日期比当前时间早,也不会缓存。
解决不缓存方案
2.1 方法一:
修改程序或者源服务器web程序响应的header
2.2 方法二:
nginx代理直接加上如下一句:
proxy_ignore_headers X-Accel-Expires ExpiresCache-ControlSet-Cookie;
或者:
proxy_ignore_headersSet-CookieCache-Control;
proxy_hide_headerCache-Control;
proxy_hide_headerSet-Cookie;
扩展:学习nginx的Proxy Cache指令
proxy_cache
语法:proxy_cache zone_name;
默认值:None
使用字段:http, server, location
设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。
在0.7.48后,缓存遵循后端的”Expires”, “Cache-Control: no-cache”, “Cache-Control: max-age=XXX”以及其他等。然而,目前nginx会忽略一些缓存控制指令,如:”private”和”no-store”,同样,nginx在缓存过程中不会处理”Vary”头,为了确保一些私有数据不被所有的用户看到,后端必须设置 “no-cache”或者”max-age=0″头,或者proxy_cache_key包含用户指定的数据如
proxy_cache_key
语法:proxy_cache_key line;
默认值:httpcookiexxx,在proxycachekey中使用一部分cookie的值可以防止缓存私有数据,所以可以分别指定location以便分开私有数据和公有数据。缓存指令依赖代理缓冲区(buffers),如果proxybuffers设置为off,缓存不会生效。¨K40K语法:¨C2C默认值:schemeproxyostrequest_uri;
使用字段:http, server, location
指令指定了包含在缓存中的缓存关键字。
复制代码 代码如下:
proxy_cache_key" h o s t host hostrequest_uri$cookie_user";
proxy_cache_key" s c h e m e scheme schemehost$request_uri";
proxy_cache_path
语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
默认值:None
使用字段:http
指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数,例如:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名类似于:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
所有活动的key和元数据存储在共享的内存区域中,这个区域用keys_zone参数指定,如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。
cache manager进程控制磁盘的缓存大小,在max_size参数中定义,超过其大小后最少使用数据将被删除。
区域的大小按照缓存页面数的比例进行设置,一个页面(文件)的元数据大小按照操作系统来定,FreeBSD/i386下为64字节,FreeBSD/amd64下为128字节,当区域满了以后key将按照LRU(最近最少使用算法)进行处理。
proxy_cache_path和proxy_temp_path应该使用在相同的文件系统上。
proxy_cache_methods
语法:proxy_cache_methods [GET HEAD POST];
默认值:proxy_cache_methods GET HEAD;
使用字段:http, server, location
GET/HEAD用来装饰语句,即你无法禁用GET/HEAD即使你只使用下列语句设置:
proxy_cache_methods POST;
proxy_cache_min_uses
语法:proxy_cache_min_uses the_number;
默认值:proxy_cache_min_uses 1;
使用字段:http, server, location
多少次的查询后应答将被缓存,默认1。
proxy_cache_valid
语法:proxy_cache_valid reply_code [reply_code …] time;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
语法:proxy_cache_min_uses the_number;
默认值:proxy_cache_min_uses 1;
使用字段:http, server, location
多少次的查询后应答将被缓存,默认1。
proxy_cache_valid
语法:proxy_cache_valid reply_code [reply_code …] time;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-kq8dK4K4-1713119450220)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!