温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Nginx系列之静态服务

发布时间:2020-08-09 09:57:44 来源:网络 阅读:239 作者:筱振 栏目:系统运维

博文大纲:
1)静态资源类型
2)静态资源场景
3)静态资源配置语法
4)静态资源文件压缩
5)静态资源浏览器缓存
6)静态资源防盗链

1)静态资源类型

Nginx作为静态资源web服务器部署配置,传输非常的高效,常常用于静态资源处理、请求、动静分离!

非服务器动态运行生成的文件属于静态资源!

类型 种类
浏览器端渲染 HTML、CSS、JS
图片 JPEG、GIF、PNG
视频 FLV、MP4
文件 TXT、任意下载文件

2)静态资源场景

静态资源传输延迟最小化!

如图:
Nginx系列之静态服务

3)静态资源配置语法

1)文件读取高效——>sendfile
Syntax:sendfile on | off ; Default:sendfile off ; Context:http、server、location、if in location ;
2)提高网络传输效率——>nopush
Syntax:tcp_nopush on | off ; Default:tcp_nopush off ; Context:http、server、location ; 作用: sendfile开启情况下, 提⾼⽹络包的'传输效率';
3)与 tcp_nopush 之对应的配置 tcp_nodelay
Syntax: tcp_nodelay on | off ; Default: tcp_nodelay on ; Context:http, server, location ; 作⽤: 在keepalive连接下,提⾼⽹络的传输‘实时性’;

4)静态资源文件压缩

Nginx 将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度。

Nginx系列之静态服务

1)gzip压缩配置语法
Syntax: gzip on | off ; Default: gzip off ; Context: http, server, location, if in location ; 作⽤:传输压缩;
2)gzip压缩比率配置语法
Syntax: gzip_comp_level level ; Default: gzip_comp_level 1 ; Context: http, server, location ; 作⽤:压缩本身⽐较耗费服务端性能 ;
3)gzip压缩协议版本
Syntax: gzip_http_version 1.0 | 1.1 ; Default: gzip_http_version 1.1 ; Context: http, server, location ; 作⽤: 压缩使⽤在http哪个协议, 主流版本1.1 ;
4)扩展压缩模块
Syntax: gzip_static on | off | always ; Default: gzip_static off ; Context: http, server, location ; 作⽤: 预读gzip功能 ;
5)图片压缩案例
[root@nginx ~]# mkdir -p /soft/code/images [root@nginx ~]# vim /etc/nginx/conf.d/static_server.conf server { listen 80; server_name 192.168.1.10; sendfile on; access_log /var/log/nginx/static_access.log main; location ~ .*\.(jpg|gif|png)$ { gzip on; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/json application/x-javascript app lication/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png; root /soft/code/images; } } [root@nginx ~]# nginx -t [root@nginx ~]# nginx -s reload 

由于图片的压缩效果不是太好,所以这里只附上配置!

6)文件压缩案例
[root@nginx ~]# mkdir -p /soft/code/doc [root@nginx ~]# vim /etc/nginx/conf.d/static_server.conf server { listen 80; server_name 192.168.1.10; sendfile on; access_log /var/log/nginx/static_access.log main; location ~ .*\.(txt|xml)$ { gzip on; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/json application/x-javascript app lication/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png; root /soft/code/doc; } } [root@nginx ~]# nginx -t [root@nginx ~]# nginx -s reload 
1)没有启用gzip文件压缩

Nginx系列之静态服务

2)启用gzip文件压缩

Nginx系列之静态服务

5)静态资源浏览器缓存

HTTP协议定义的缓存机制(如: Expires; Cache-control 等)

1)浏览器无缓存

浏览器请求——>无缓存——>请求web服务器——>请求响应——>呈现

2)浏览器有缓存

浏览器请求->有缓存->校验过期->是否有更新->呈现 校验是否过期 Expires HTTP1.0, Cache-Control(max-age) HTTP1.1 协议中Etag头信息校验 Etag () Last-Modified头信息校验 Last-Modified (具体时间)
1)缓存配置语法expires
Syntax: expires [modified] time ; Default: expires off ; Context: http, server, location, if in location ; 作⽤: 添加Cache-Control Expires头 ;
2)配置静态资源缓存
[root@nginx conf.d]# vim static_server.conf server { listen 80; server_name 192.168.1.10; sendfile on; access_log /var/log/nginx/static_access.log main; location ~ .*\.(txt|js|css|html)$ { root /soft/code/doc; expires 1h; } location ~ .*\.(jpg|gif|png)$ { root /soft/code/images; expires 7d; } } [root@nginx conf.d]# nginx -t [root@nginx conf.d]# nginx -s reload

浏览器测试效果:
Nginx系列之静态服务
Nginx系列之静态服务

3)配置静态文件不缓存
[root@nginx conf.d]# vim static_server.conf server { listen 80; server_name 192.168.1.10; sendfile on; access_log /var/log/nginx/static_access.log main; location ~ .*\.(txt|js|css|html)$ { root /soft/code/doc; add_header Cache-Control no-store; add_header Pragma no-cache; } location ~ .*\.(jpg|gif|png)$ { root /soft/code/images; expires 7d; } } [root@nginx conf.d]# nginx -t [root@nginx conf.d]# nginx -s reload

浏览器测试效果:
Nginx系列之静态服务

6)静态资源防盗链

盗链指的是在⾃⼰的界⾯展示不在⾃⼰服务器上的内容,通过技术⼿段获得他⼈服务器的资源地址,绕过别⼈资源展示⻚⾯,在⾃⼰⻚⾯向⽤户提供此内容,从⽽减轻⾃⼰服务器的负担,因为真实的空间和流量来⾃别⼈服务器;

防盗链设置思路: 区别哪些请求是⾮正常⽤户请求;

基于http_refer 防盗链配置模块:

Syntax: valid_referers none | blocked | server_names | string ...; Default: — Context: server, location

另一台nginx服务器(初始的情况),编写html文件:

[root@nginx02 conf.d]# vim /usr/share/nginx/html/dl.html <html> <head> <meta charset="utf-8"> <title>pachong</title> </head> <body > <img src="http://192.168.1.10/test.jpg"> </body> </html> [root@nginx02 conf.d]# nginx -t [root@nginx02 conf.d]# nginx -s reload

第一台服务正常访问:
Nginx系列之静态服务
第二胎服务器盗用第一台服务器的图片:
Nginx系列之静态服务

2)启用防盗链
[root@nginx conf.d]# vim static.conf server { listen 80; server_name 192.168.1.10; valid_referers none blocked 192.168.1.10; location ~ .*\.(jpg|gif|png)$ { if ($invalid_referer) { return 403; break; } root /soft/code/images; } } [root@nginx conf.d]# nginx -t [root@nginx conf.d]# nginx -s reload

再次访问第二台服务器:
Nginx系列之静态服务

——————————本文到此结束,感谢阅读————————

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI