目录
Nginx场景实践_动静分离
Nginx场景实践_动静分离实战
Nginx场景实践_缓存机制
Nginx场景实践_动静分离
Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开,可以理解成使用Nginx处理静态请求, Tomcat处理动态请求。
什么是动静分离
动:必须依赖服务器生存的文件 比如jsp。
静:不需要依赖容器的比如css/js或者图片等文件
动静分离的好处
- Nginx本身就是一个高性能的静态web服务器
- 其实静态文件有一个特点就是基本上变化不大,所以动静分离以后我们可以对静态文件进行缓存、 或者压缩提高网站性能
静态资源的类型
在Nginx的conf目录下,有一个mime.types文件里边列出了 静态资源的类型,如下:
当用户访问一个网站,然后从服务器端获取相应的资源,通过浏览器进行解析渲染最后展示给用户,服务端可以返回各种类 型的内容,比如xml、jpg、png、gif、flash、MP4、html、 css等等,浏览器就是根据mime-type来决定用什么形式来解析和展示的。服务器返回的资源给到浏览器时,会把媒体类型告知浏览器,这个告知的标识就是Content-Type,比如ContentType:text/html。
实时效果反馈
1. 动静分离最主要的作用是____。
A 提高网站性能
B 安全性
C 稳定性
D 可靠性
2.下列文件类型是动态资源文件的是____。
A js
B css
C img
D jsp
Nginx场景实践_动静分离实战
静态资源的准备
在服务器中准备文件夹放置图片、css、js。
# mkdir -p /usr/local/nginx/static
通过请求分离
upstream webservers {
server 192.168.66.101:8080 weight=5;
server 192.168.66.102:8080 weight=5;
}
server {
listen 80;
server_name *.*;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $host;
proxy_pass http://webservers;
}
location /image/ {
root static;
}
location /web/ {
proxy_set_header Host $host;
proxy_pass http://webservers;
}
}
}
根据扩展名分离
upstream webservers {
server 192.168.66.101:8080 weight=5;
server 192.168.66.102:8080 weight=5;
}
server {
listen 80;
server_name *.*;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $host;
proxy_pass http://webservers;
}
location ~ .*.(jpg|png|gif|css|js)$
{
root static;
}
}
}
实时效果反馈
1. 最常见的动静分离方式是____。
A 基于拓展名
B 基于请求
C 基于客户标识
D 基于pc和移动
Nginx场景实践_缓存机制
核心:
响应速度历来是衡量WEB应用和服务性能优劣的重要指标之 一,尤其动态网站在网络上泛滥的今天。除了优化发布内容以外,另外一个主要的办法就是把不需要实时更新的动态页面输 出结果转为静态网页形式缓存,进而按照静态网页来访问。
proxy Cache缓存机制
配置proxy_cache模块
语法结构
在nginx.conf文件中添加如下代码:
http{
......
proxy_cache_path /data/nginx/tmp-test
levels=1:2 keys_zone=tmp-test:100m
inactive=7d max_size=1000g;
}
参数说明:
- proxy_cache_path 缓存文件路径 levels 设置缓存文件目录层次;
- levels=1:2 表示两级目录
- keys_zone 设置缓存名字和共享内存大小
- inactive 在指定时间内没人访问则被删除
- max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
当配置好之后,重启nginx,如果不报错,则配置的 proxy_cache会生效
查看 proxy_cache_path / data/ nginx / 目录, 会发现生成了 tmp -test 文件夹。
如何使用proxy_cache
语法配置
location /tmp-test/ {
proxy_cache tmp-test;
proxy_cache_valid 200 206 304 301 302 10d;
proxy_cache_key $uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_pass
http://127.0.0.1:8081/media_store.php/tmp-test/;
}
参数:
Proxy_cache tmp -test 使用名为 tmp -test 的对应缓存配置
proxy_cache_valid 200 206 304 301 302 10d; 对httpcode为200…的缓存10天
proxy_cache_key $uri 定义缓存唯一key,通过唯一key来进行hash存取
proxy_set_header 自定义http header头,用于发送给后端真实服务器。
proxy_pass 指代理后转发的路径,注意是否 需要 最后的 /
提出问题
到此,就完成了最基本的proxy_cache配置和访问过程介绍,但是最基本的配置,往往无法满足我们的业务需求,我们往往会提出以下疑问和需求:
1、需要主动清理缓存文件
解决问题
location /tmp-test/ {
allow 127.0.0.1; //只允许本机访问
deny all; //禁止其他所有ip
proxy_cache_purge tmp-test $uri; //清理缓存
}
实时效果反馈
1. 下列____对软件做压力测试的工具。
A maven
B post
C Jmeter
D spring
2.影响网络访问速度的最主要因素是___。
A 网络带宽
B 访问距离
C 服务器处理能力
D 硬件配置