nginx处理静态资源

  • sendfile
作用:优化静态文件处理效率(linux内部处理机制相关)
指令:sendfile on|off(default)
范围:http、server、location
  • tcp_nopush
作用:sendfile开启情况下生效,提高网络包传输效率(累计包到一定量级发送)
指令:tcp_nopush on|off(default)
范围:http、server、location
  • tcp_nodelay
作用:keepalive开启情况下,提高网络包传输实时性,作用和tcp_nopush相反
指令:tcp_nodelay on(default)|off
范围:http、server、location
  • 压缩传输
作用:压缩http响应内容,减少带宽占用

指令1:gzip on|off(default)
范围1:http、server、location

指令2:gzip_comp_level level(default level=1)
范围2:http、server、location

指令3:gzip_http_version 1.0|1.1(default)
范围3:http、server、location

其他:
支持gzip预读功能:http_gzip_static_module
支持gunzip压缩:http_gunzip_module
  • 举例
sendfile on;
location ~ .*\.(jpg|gif|png)$ {
	root /opt/code/images;
	gzip on;
	gzip_http_version 1.1;
	gzip_comp_level 2;
	gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
location ~ .*\.(txt|xml)$ {
	root /opt/code/docs;
	gzip on;
	gzip_http_version 1.1;
	gzip_comp_level 1;
	gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
location ~ ^/download {
	root /opt/code/download;
	#开启gzip预读功能,请求路由到对应目录下,首先查看是否存在对应的gz文件
	gzip_static on;
	tcp_nopush on;
}
  • 设置静态资源过期
作用:设置静态资源过期
指令:
expires [modified] time;
expires epoch|max|off(default)
例子:
location ~ .*\.(html|htm)$ {
	root /opt/code/html;
	expires 24h;
}
  • 设置http响应头信息
场景:nginx通过配置响应头信息,允许浏览器跨站访问指定站点
指令:add_header name value [always]
范围:http、server、location
例子:
location ~ .*\.(html|htm)$ {
	root /opt/code/html;
	#在响应信息中,配置浏览器允许跨域访问www.baidu.com
	add_header Access-Control-Allow-Origin http://www.baidu.com;
	add_header Access-Control-Allow-Method GET,POST,PUT,DELETE,OPTIONS;
}
  • 防盗链(防止网站资源被盗用)
作用:
1:区别正常和非正常用户
2:基于http_refer防盗链配置模块
指令:valid_referers none|blocked|server_names|string...
范围:server、location
例子:
location ~ .*\.(jpg|gif|png)$ {
	root /opt/code/images;
	gzip on;
	gzip_http_version 1.1;
	gzip_comp_level 2;
	gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
	#http_refer=none
	#none:允许没有http_refer的请求访问资源
	#blocked:允许非http://开头的,不带协议的请求访问资源,例如:./main.js;
	#ip:仅允许指定ip(2.2.2.2)来的请求访问资源
	valid_referers none blocked 2.2.2.2;
	#无效访问则返回403
	if ($invalid_referer) {
		return 403;
	}
}

你可能感兴趣的:(nginx)