1.静态参数配置
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

3)提高网络传输实时性tcp_nodelay

Syntax: tcp_nodelay on | off;
Default: tcp_nodelay on;
Context: http, server, location

2.静态资源文件压缩
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

4)扩展压缩模块

Syntax: gzip_static on | off | always;
Default: gzip_static off;
Context: http, server, location

5)图片压缩案例

[root@localhost conf.d]# mkdir -p /usr/share/nginx/html/images
[root@localhost conf.d]# vim server.conf
server {
listen 80;
server_name 127.0.0.1;
sendfile on;
access_log /var/log/nginx/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 application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /usr/share/nginx/html/images;
}
}

6)文件压缩案例

[root@localhost conf.d]# mkdir -p /usr/share/nginx/html/doc
[root@localhost conf.d]# vim server.conf
server {
listen 80;
server_name 127.0.0.1;
sendfile on;
access_log /var/log/nginx/access.log main;
location ~ .*\.(txt|xml)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /usr/share/nginx/html/doc;
}
} 

3.静态资源浏览器缓存
HTTP协议定义的缓存机制(如: Expires; Cache-control 等)

1)缓存配置语法expires

Syntax: expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location

2)配置静态资源缓存

location ~ .*\.(js|css|html)$ {
root /usr/share/nginx/html/js;
expires 1h;
} location ~ .*\.(jpg|gif|png)$ {
root /usr/share/nginx/html/images;
expires 7d;
}

3)开发代码没有正式上线时, 希望静态文件不被缓存

#取消js css html等静态文件缓存
location ~ .*\.(css|js|swf|json|mp4|htm|html)$ {
add_header Cache-Control no-store;
add_header Pragma no-cache;
}

4.静态资源跨域访问

Syntax: add_header name value [always];
Default: —
Context: http, server, location, if in location Access-Control-Allow-Origin

1)配置Nginx跨域访问

[root@localhost conf.d]# vim origin.conf
server {
listen 80;
server_name 127.0.0.1;
root html;
index index.html index.htm;
location ~ .*\.(html|htm)$ {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
}
}

2)参数解释

1、Access-Control-Allow-Origin,这里使用变量 $http_origin取得当前来源域,“*”代表允许所有;
2、Access-Control-Allow-Credentials,为 true 的时候指请求时可带上Cookie;
3、Access-Control-Allow-Methods,OPTIONS一定要有的,另外一般也就GET和POST,如果你有其它的也可加进去;
4、Access-Control-Allow-Headers,这个要注意,里面一定要包含自定义的http头字段;
5、Access-Control-Expose-Headers,可不设置,大致意思是默认只能获返回头的6个基本字段,要获取其它额外的,先在这设置才能获取它;
6、语句“ if ($request_method = 'OPTIONS') { ”,因为浏览器判断是否允许跨域时会先往后端发一个 options 请求,然后根据返回的结果判断是否允许跨域请求,所以这里单独判断这个请求,然后直接返回;

5.静态资源防盗链
盗链指的是在自己的界面展示不在自己服务器上的内容,通过技术手段获得他人服务器的资源地址,绕过别人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自别人服务器。
防盗链设置思路: 区别哪些请求是非正常用户请求

基于http_refer防盗链配置模块

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

1)配置静态资源防盗链

#支持IP、域名、正则方式
location ~ .*\.(jpg|gif|png)$ {
valid_referers none blocked 127.0.0.1;
if ($invalid_referer) {
return 403;
}
root /usr/share/nginx/html/images;
} location ~ .*\.(jpg|gif|png)$ {
root html;
valid_referers none blocked www.example.com;
if ($invalid_referer){
return 403;
rewrite ^/ http://127.0.0.1/images/loading.jpg;
} }

2)参数解释

1、valid_referers这个关键字定义了白名单;
2、invalid_referer是内置变量,通过判断上一行中的valid_referers值会返回0或者1;
3、none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址;
4、blocked代表被防火墙过滤标记过的请求;
5、如果访问来源不在白名单内,则返回403错误;
6、可以通过设定指定的图片来代替目标图片;

3)验证
这种实现可以限制大多数普通的非法请求,但不能限制有目的的请求,因为这种方式可以通过伪造referer信息来绕过

#伪造协议头访问
[root@localhost ~]# curl -e "http://www.baidu.com" -I http://127.0.0.1/test.jpg
HTTP/1.1 403 Forbidden
Server: nginx/1.18.0
Date: Thu, 09 Jul 2020 07:41:38 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive #伪造协议头访问
[root@localhost ~]# curl -e "http://www.example.com" -I http://127.0.0.1/test.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Thu, 09 Jul 2020 07:41:01 GMT
Content-Type: image/jpeg
Content-Length: 5
Last-Modified: Thu, 09 Jul 2020 07:32:36 GMT
Connection: keep-alive
ETag: "5f06c814-5"
Accept-Ranges: bytes

Nginx基础 - 配置静态web服务的更多相关文章

  1. Nginx基础 - 配置代理web服务

    1.反向代理及负载均衡Nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求代理转发至一组upstream虚拟服务池. 1)upstream配置语法 Syntax: upstr ...

  2. Nginx基础 - 配置缓存web服务

    1.缓存配置语法 1)proxy_cache配置语法 Syntax: proxy_cache zone | off; Default: proxy_cache off; Context: http, ...

  3. Nginx基础 - HTTPS安全web服务

    1.HTTPS配置语法 Syntax: ssl on | off; Default: ssl off; Context: http, server Syntax: ssl_certificate fi ...

  4. koa 基础(十二)koa-static 静态资源中间件 静态web服务

    1.目录 2.app.js /** * koa-static 静态资源中间件 静态web服务 * 1.npm install --save koa-static * 2.const static = ...

  5. Nginx配置静态文件服务从入门到精通

    作者:三十三重天 博客:http://www.zhouhuibo.club 通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施. 引言 使 ...

  6. nodejs静态web服务

    项目准备 Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的 ...

  7. 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点

    一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...

  8. Nginx作为静态WEB服务

    1.静态资源类型 Nginx作为静态资源Web服务器部署配置, 传输非常的高效, 常常用于静态资源处理, 请求, 动静分离 非服务器动态运行生成的文件属于静态资源 类型 种类 浏览器端渲染 HTML. ...

  9. Web架构之Nginx基础配置

    目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...

随机推荐

  1. 【Oracle】userenv()函数介绍分析

    说到这个userenv()使用起来还是很有用的 参数   功能 CLINET_INFO                                      返回最高可达64个字节存储的用户会话信 ...

  2. C语言目的概念(C语言学习笔记)

    什么是目 目是针对操作符来说的,一个操作符影响两个操作数就表示该操作符为双目运算符 举个例子: 1+2 这里的加号影响了1和2两个操作数,所以"+"就是双目运算符 +1,-1 这里 ...

  3. 使用modify修改内表

    modify修改内表,有这样一种方式,MODIFY TABLE itab FROM wa [TRANSPORTING ..]. 然后这里的内表itab是有条件的,这个itab必须要有table key ...

  4. Sentry(v20.12.1) K8S 云原生架构探索,JavaScript Enriching Events(丰富事件信息)

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  5. 转 Jmeter测试实践:文件上传接口

    Jmeter测试实践:文件上传接口   1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何 ...

  6. 虚拟化kvm的搭建

            虚拟化, 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机 ,在一台计算机上同时运行多个逻辑计算机,每台逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不 ...

  7. python 字典(formkey 建立 取值 赋值 删除 )

      formkey快速建立空字典   result = {}.fromkeys(['name','age','job'],None) print(result)   #往字典里添加元素 result. ...

  8. 全栈性能测试修炼宝典-JMeter实战笔记(二)

    性能测试初体验 性能测试实质:利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决:找出系统性能变化趋势,为后续的扩展提供参考 测试分类 测试内容中,负载测试.压力测 ...

  9. 手把手做一个基于vue-cli的组件库(上篇)

    基于vue-cli4的ui组件库,先贴个最终效果吧,步骤有点多,准备分上下篇,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.开工. GitHub源码地址:https://github.co ...

  10. Slack 的想法很好啊,很有创新,牛。

    [原]https://www.leiphone.com/news/201411/aXHUpe4ZFI2sSwpb.html 由于以往一些用于办公的应用反响平平,因此对迅速崛起的办公交流应用Slack, ...