学习nginx从入门到实践(五) 场景实践之静态资源web服务
一.静态资源web服务
1.1
静态资源定义:非服务器动态生成的文件。
1.2 静态资源服务场景-CDN
1.3 文件读取配置
1.3.1 sendfile
配置语法:
syntax: sendfile on | off;
default:sendfile off
context:http,server,location,if in location
注 –with-file-aio异步文件读取
1.3.2 tcp_nopush
作用:sendfile 开启的情况下,提高网络包的传输效率(等待,一次传输)
配置语法:
syntax: tcp_nopush on | off
default: tcp_nopush off
context: http, server, location
相反的
1.3.3 tcp_nodelay
作用:在keepalive连接下,提高网络包的传输实时性
配置语法:
syntax: tcp_nodelay on | off
default: tcp_nodelay on
context: http, server, location
1.3.4 压缩
作用:在keepalive连接下,提高网络包的传输实时性
配置语法:
syntax:gzip on | off
default:gzip off
context:http, server, if in location
syntax: gzip_comp_level level;
default: gzip_comp_level 1;
context: http, server, location
扩展nginx压缩模块
- http_gzip_static_module:预读gzip功能
- http_gunzip_module: 应用支持gunzip的压缩方式
配置截图
1.4 浏览器缓存
作用:http协议定义的缓存机制(如:expires,cache-control 等)
检测过期机制
作用 | 请求头 |
---|---|
检验是否过期 | expires, cache-control (max-age) |
协议中Etag头信息校验 | etag |
last-modified 头信息校验 |
last-modified |
浏览器请求服务器过程(缓存版本)
相关配置
expires 添加cache-control、expires头
配置语法:
syntax: expires [modified] time;
expires epoch | max | off;
default: expires off;
context: http, server, location
配置例子:
location ~ .*\.(htm|html)$ {
#expires 24h;
root /opt/app/code;
}
1.5 跨域访问
为什么浏览器禁止跨域访问: 不安全,容易出现CSRF攻击
nginx配置:
配置语法:
syntax: add_header name value [always]
default: -
context: http, server, location, if in location
添加请求头:Access-Control-Allow-Origin
配置截图:![](https://images2017.cnblogs.com/blog/1195700/201801/1195700-20180104111145237-985749790.png)
1.6 跨域访问
目的 - 防止资源被盗用
防盗链设置思路: 首要方式:区别哪些请求是非正常的用户请求
配置语法:
syntax: valid_referers none | blocked | server_names | string...;
default: -
context: server, location
配置截图:
![](https://images2017.cnblogs.com/blog/1195700/201801/1195700-20180104111834690-547417607.png)
none: 表示如果没带refer
blocked: 代表不是标准的http写过过来的
blocked: 代表不是标准的http写过过来的
一个命令: curl -e "http://www.baidu.com" -I http://116.62.103.228/wei.png
-e: 表示refer
-i: 表示只显示请求头
-i: 表示只显示请求头