一.静态资源类型
静态资源配置
已有配置:
server {
listen 80;
server_name 192.168.0.77;
sendfile on;
#charset koi8-r;
access_log /var/log/nginx/err.log main;
location = / {
#proxy_pass http://localhost:8080 //将Nginx的所有请求都转发给http://localhost:8880
}
}
配置静态资源服务器,把一部分请求分离出来,让这些请求直接访问到服务器的磁盘目录中
例:
location /image/ {
root /usr/local/static/;
autoindex on;
}
表示输入 192.168.0.77/image/时会访问本机的/usr/local/static/image/ 目录。
语法规则:
location [=|~|~*|^~] /uri/ { … }
*
= 开头表示精确匹配
*
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
*
~ 开头表示区分大小写的正则匹配
*
~* 开头表示不区分大小写的正则匹配
*
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
*
/ 通用匹配,任何请求都会匹配到。
多个location配置的情况下匹配顺序为:首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
例:
server {
listen 80;
server_name 192.168.0.77;
sendfile on;
#charset koi8-r;
access_log /var/log/nginx/log/static_access.log main;
location ~ .*\.(jpg|gif|png)$ {
gzip on; //开启压缩
gzip_http_version 1.1;
gzip_comp_level 2; //压缩比
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; //压缩类型
root /opt/app/code/images;
}
location ~ .*\.(txt|xml)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /opt/app/code/doc;
}
location ~ ^/download {
gzip_static on; //压缩预读 需要源文件本地压缩
tcp_nopush on;
root /opt/app/code;
}
二. 浏览器缓存
作用:提升用户体验,减少服务器压力
2.1 浏览器缓存原理
当浏览器无缓存:浏览器发起请求->无缓存->请求WEB服务器->web服务器检查是否有更新(没有更新返回304)->呈现
浏览器有缓存:浏览器发起请求->有缓存->检验过期->web服务器检查是否有更新(没有更新返回304)->呈现
2.2nginx缓存配置
这里我配置在server标签中location外,也就是说对server的所有资源进行缓存,如果是设置行指定location中那么是对指定的location资源进行缓存
root@Nginx ~]# vim /etc/nginx/nginx.conf
http {
server {
expires 2h;
}
}
例:
2.3测试:
A:没有缓存配置之前:响应报头中不存在cache-control缓存控制
B:开启缓存:
在响应报头中存在max-age=3600 也就是2个小时有效时间
三.防盗链
目的:防止资源盗用 减少服务器压力
nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求
语法: valid_ referers none | blocked | server_ names | string …;
默认值: —
配置段: server, location
指定合法的来源’referer’, 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1.记住,不区分大小写的.
防盗链配置:
图片防盗链配置:
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked 192.168.0.77 *.baidu.com *.google.com; //白名单,允许文件链出的域名白名单
if ($invalid_referer) {
return 404;
#rewrite ^/ http://www.ttlsa.com/403.jpg;
}
}
valid_referers none blocked 192.168.0.77 .baidu.com .google.com;
在浏览器直接输入图片地址不会再显示图片,也不右键另存的可把none blocked去掉