1.静态资源Web服务
非服务器动态生成的文件如 html,css,js 图片、视频、文件
2.静态资源服务场景-cdn
cdn内容分发的逻辑网络
3.文件读取配置语法
作用:-with-file-aio 异步文件读取
Syntax: sendfile on | off; Default: sendfile off; Context: http, server, location, if in location
4.tcp_nopush-配置语法
作用:不是着急的把包推送给客户端(我们打包后再发),sendfile开启的情况下,提高网络包的传输效率
Syntax: tcp_nopush on | off;
Default: tcp_nopush off;
Context: http, server, location
5 .tcp_nodelay -配置语法
作用:keepalive 连接下,提高网络包的传输实时性
Syntax: tcp_nodelay on | off;
Default: tcp_nodelay on;
Context: http, server, location
6.压缩-配置语法
作用:压缩传输
Syntax: tcp_nodelay on | off; Default: tcp_nodelay on; Context: http, server, location
6.1 压缩比例
作用:
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location
6.2 gzip http 协议的版本
作用:
Syntax: gzip_http_version 1.0 | 1.1; Default: gzip_http_version 1.1; Context: http, server, location
6.3扩展 Nginx压缩模块
// 图片压缩 效果不太明显
location ~ .*\.(jpg|gif|png)$ {
# 1. 开启压缩
gzip on;
# 2. gzip http 协议的版本
gzip_http_version 1.1;
# 3.压缩比
gzip_comp_level 2;
# 4. 压缩那些类型的
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /opt/app/code/images;
}
// txt,xml 文件压缩 压缩效果比较好
location ~ .*\.(txt|xml)$ {
# 1. 开启压缩
gzip on;
# 2. gzip http 协议的版本
gzip_http_version 1.1;
# 3.压缩比
gzip_comp_level 1;
# 4. 压缩那些类型的
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /opt/app/code/doc;
}
# 以download 开头的请求
location ~ ^/download {
# 1.预读gzip功能开启
gzip_static on;
# 2.
tcp_nopush on;
root /opt/app/code;
}
7.浏览器缓存
HTTP协议定义的缓存机制(如:Expires;Cache-control 等)
客户端有缓存和无缓存对比
无缓存:
有缓存:
7.1 校验过期的机制
校验是否过期 | Expires,Cache-Control(max-age) |
---|---|
协议中Etag头信息校验 | Etag |
Last-Modified头信息校验 | Last-Modified |
7.2 expires-配置语法
Syntax: expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location
location ~ .*\.(htm|html)$ {
expires 24h;
root /opt/app/code;
}
8.跨域请求
浏览器禁止跨域,因为访问不安全,容易出现CSRF攻击!
8.1 .nignx 打开跨域请求配置
add_header
// 参数含义
name : Access-Control-Allow-Origin 决定是否开启跨域访问
value: 站点名称
Syntax: add_header name value [always];
Default: —
Context: http, server, location, if in location
实例
location ~ .*\.(htm|html)$ {
add_header Access-Control-Allow-Origin https://Xxx.Xxx.com;
add_header Access-Control-Allow-Methods
GET,POST,PUT,DELETE,OPTIONS;
root /opt/app/code;
}
9.防盗链
目的:防止资源被盗用
防盗链设置思路:
1.区别哪些请求是非正常的用户请求
9.1基于http_refer防盗链配置模块
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location
http_refer 是一个nginx的一个变量
location ~ .*\.(jpg|gif|png)$ {
# valid_referers 表示允许哪一些referer过来访问,none 表示是我们允许没有带referer信息的过来
# blocked 表示referer不是标准的 http://域名 过来的,是一些没有带协议过来的
# 116.63.102.328 只允许这个ip访问
# 还可以正则匹配
valid_referers none blocked 116.63.102.328 ~/google\./;
# invalid_referer 如果前面设置过这些,这个值不会为空
if ($invalid_referer){
return 403;
}
root /opt/app/code/images;
}