1.静态参数配置
1)文件读取高效sendfile

  1. Syntax: sendfile on | off;
  2. Default: sendfile off;
  3. Context: http, server, location, if in location

2)提高网络传输效率nopush

  1. Syntax: tcp_nopush on | off;
  2. Default: tcp_nopush off;
  3. Context: http, server, location

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

  1. Syntax: tcp_nodelay on | off;
  2. Default: tcp_nodelay on;
  3. Context: http, server, location

2.静态资源文件压缩
Nginx将响应报文发送至客户端之前可以启用压缩功能,这能够有效地节约带宽,并提高响应至客户端的速度。

1)gzip压缩配置语法

  1. Syntax: gzip on | off;
  2. Default: gzip off;
  3. Context: http, server, location, if in location

2)gzip压缩比率配置语法

  1. Syntax: gzip_comp_level level;
  2. Default: gzip_comp_level 1;
  3. Context: http, server, location

3)gzip压缩协议版本

  1. Syntax: gzip_http_version 1.0 | 1.1;
  2. Default: gzip_http_version 1.1;
  3. Context: http, server, location

4)扩展压缩模块

  1. Syntax: gzip_static on | off | always;
  2. Default: gzip_static off;
  3. Context: http, server, location

5)图片压缩案例

  1. [root@localhost conf.d]# mkdir -p /usr/share/nginx/html/images
  2. [root@localhost conf.d]# vim server.conf
  3. server {
  4. listen 80;
  5. server_name 127.0.0.1;
  6. sendfile on;
  7. access_log /var/log/nginx/access.log main;
  8.  
  9. location ~ .*\.(jpg|gif|png)$ {
  10. gzip on;
  11. gzip_http_version 1.1;
  12. gzip_comp_level 2;
  13. 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;
  14. root /usr/share/nginx/html/images;
  15. }
  16. }

6)文件压缩案例

  1. [root@localhost conf.d]# mkdir -p /usr/share/nginx/html/doc
  2. [root@localhost conf.d]# vim server.conf
  3. server {
  4. listen 80;
  5. server_name 127.0.0.1;
  6. sendfile on;
  7. access_log /var/log/nginx/access.log main;
  8. location ~ .*\.(txt|xml)$ {
  9. gzip on;
  10. gzip_http_version 1.1;
  11. gzip_comp_level 1;
  12. 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;
  13. root /usr/share/nginx/html/doc;
  14. }
  15. } 

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

1)缓存配置语法expires

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

2)配置静态资源缓存

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

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

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

4.静态资源跨域访问

  1. Syntax: add_header name value [always];
  2. Default:
  3. Context: http, server, location, if in location
  4.  
  5. Access-Control-Allow-Origin

1)配置Nginx跨域访问

  1. [root@localhost conf.d]# vim origin.conf
  2. server {
  3. listen 80;
  4. server_name 127.0.0.1;
  5. root html;
  6. index index.html index.htm;
  7. location ~ .*\.(html|htm)$ {
  8. add_header 'Access-Control-Allow-Origin' $http_origin;
  9. add_header 'Access-Control-Allow-Credentials' 'true';
  10. add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,OPTIONS';
  11. 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';
  12. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  13. if ($request_method = 'OPTIONS') {
  14. add_header 'Access-Control-Max-Age' 1728000;
  15. add_header 'Content-Type' 'text/plain; charset=utf-8';
  16. add_header 'Content-Length' 0;
  17. return 204;
  18. }
  19. }
  20. }

2)参数解释

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

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

基于http_refer防盗链配置模块

  1. Syntax: valid_referers none | blocked | server_names | string ...;
  2. Default:
  3. Context: server, location

1)配置静态资源防盗链

  1. #支持IP、域名、正则方式
  2. location ~ .*\.(jpg|gif|png)$ {
  3. valid_referers none blocked 127.0.0.1;
  4. if ($invalid_referer) {
  5. return 403;
  6. }
  7. root /usr/share/nginx/html/images;
  8. }
  9.  
  10. location ~ .*\.(jpg|gif|png)$ {
  11. root html;
  12. valid_referers none blocked www.example.com;
  13. if ($invalid_referer){
  14. return 403;
  15. rewrite ^/ http://127.0.0.1/images/loading.jpg;
  16. }
  17.  
  18. }

2)参数解释

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

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

  1. #伪造协议头访问
  2. [root@localhost ~]# curl -e "http://www.baidu.com" -I http://127.0.0.1/test.jpg
  3. HTTP/1.1 403 Forbidden
  4. Server: nginx/1.18.0
  5. Date: Thu, 09 Jul 2020 07:41:38 GMT
  6. Content-Type: text/html
  7. Content-Length: 153
  8. Connection: keep-alive
  9.  
  10. #伪造协议头访问
  11. [root@localhost ~]# curl -e "http://www.example.com" -I http://127.0.0.1/test.jpg
  12. HTTP/1.1 200 OK
  13. Server: nginx/1.18.0
  14. Date: Thu, 09 Jul 2020 07:41:01 GMT
  15. Content-Type: image/jpeg
  16. Content-Length: 5
  17. Last-Modified: Thu, 09 Jul 2020 07:32:36 GMT
  18. Connection: keep-alive
  19. ETag: "5f06c814-5"
  20. 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. Docker安装配置及华为云镜像加速

    Docker华为云镜像加速 软件介绍 支持的操作系统 docker安装 docker镜像加速(华为云实现) 1.登录华为云网站,注册华为云账户 2.登录华为云账户,点击网页右上角的控制台 3.点击左上 ...

  2. Java安全之Weblogic 2018-3248分析

    Java安全之Weblogic 2018-3248分析 0x00 前言 基于前面的分析,后面的还是主要看补丁的绕过方式,这里就来简单的记录一下. 0x01 补丁分析 先来看看补丁细节 private ...

  3. 请谨慎使用 avaliable 方法来申请缓冲区

    问题 今天开始尝试用 Java 写 http 服务器,开局就遇到 Bug. 我先写了一个多线程的.BIO 的 http 服务器,其中接收请求的部分,会将请求的第一行打印出来. 下面是浏览器发出的请求和 ...

  4. Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令

    就这三步骤,下面的是实例不看也罢. apt-get update ###第一步一定要先执行这个更新下.不更新下面的安装命令会显示找不到网络包 //ifconfig apt install net-to ...

  5. 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01

    https://mp.weixin.qq.com/s/jfHFXZpzbAEbHKkCMSev6w 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极 ...

  6. 初识JavaScript和jQuery

    JavaScript 1.特性 ①脚本语言.JavaScript是一种解释型的脚本语言,C.C++.Java等语言先编译后执行, 而JavaScript是在程序的运行过程中逐行进行解释. ②基于对象. ...

  7. Most basic operations in Go are not synchronized. In other words, they are not concurrency-safe.

    Most basic operations in Go are not synchronized. In other words, they are not concurrency-safe. htt ...

  8. (002)每日SQL学习:删除名称重复的数据

    create table A ( id VARCHAR2(36), name VARCHAR2(100), sl VARCHAR2(36) ); insert all into a (id,name) ...

  9. CSS 文本效果

         对于CSS文本的一些效果,基础一些的知识比较简单,但对于text-indent,vertical-align,text-align等的深入学习能够使我们对HTML5的学习更加轻松,对这部分知 ...

  10. redis学习教程一《Redis的安装和配置》

    redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...