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. poj-Decoding Morse Sequences(动态规划)

    Description Before the digital age, the most common "binary" code for radio communication ...

  2. Table controls and tabstrip controls

    本文转载自http://www.cnblogs.com/clsoho/archive/2010/01/21/1653268.html ONTROLS Syntax Forms Declaration ...

  3. expect的使用

    1. expect概述 1.1 expect的功能 脚本执行时,有时会需要人工进行交互输入,这时可以通过expect工具来实现自动交互. expect是一种shell解释器,但是expect可以在命令 ...

  4. 网络流量预测入门(一)之RNN 介绍

    目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...

  5. Ubuntu14.04系统安装

    1. 使用U盘或光盘进行引导进入系统安装向导. 2. 安装类型选择,选择中文(简体).然后点安装ubuntu. 3. 安装ubuntu电脑必须接入外网(外网的方式有自动获取或手动编辑IP地址). 网络 ...

  6. fiddler安装以及使用说明

    一.fiddler fiddler是一个抓包工具,通过使用它抓包我们可以很清晰的看到抓的内容的协议,URL,参数等. 1.安装 在普通下载网站找到安装包,直接安装,点击下一步即可. 二.使用 1.se ...

  7. CobalStrike 4.0 生成后门几种方式 及 主机上线后基础操作

    出品|MS08067实验室(www.ms08067.com) 本文作者:BlackCat(Ms08067内网安全小组成员) CobalStrike 4.0 生成后门几种方式 步骤:Attacks-〉P ...

  8. 大数据系列4:Yarn以及MapReduce 2

    系列文章: 大数据系列:一文初识Hdfs 大数据系列2:Hdfs的读写操作 大数据谢列3:Hdfs的HA实现 通过前文,我们对Hdfs的已经有了一定的了解,本文将继续之前的内容,介绍Yarn与Yarn ...

  9. Uber如何解决2000多个微服务带来的复杂性问题?

    Uber如何解决2000多个微服务带来的复杂性问题? Adam Gluck 架构头条 2020-10-29 https://mp.weixin.qq.com/s/N7fVDZVm8uC9wVvd9DQ ...

  10. Webpack4.0各个击破(6)loader篇

    目录 一. loader综述 二. 如何写一个loader 三. loader的编译器本质 [参考] 一. loader综述 loader是webpack的核心概念之一,它的基本工作流是将一个文件以字 ...