Nginx基础 - 配置静态web服务
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服务的更多相关文章
- Nginx基础 - 配置代理web服务
1.反向代理及负载均衡Nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求代理转发至一组upstream虚拟服务池. 1)upstream配置语法 Syntax: upstr ...
- Nginx基础 - 配置缓存web服务
1.缓存配置语法 1)proxy_cache配置语法 Syntax: proxy_cache zone | off; Default: proxy_cache off; Context: http, ...
- Nginx基础 - HTTPS安全web服务
1.HTTPS配置语法 Syntax: ssl on | off; Default: ssl off; Context: http, server Syntax: ssl_certificate fi ...
- koa 基础(十二)koa-static 静态资源中间件 静态web服务
1.目录 2.app.js /** * koa-static 静态资源中间件 静态web服务 * 1.npm install --save koa-static * 2.const static = ...
- Nginx配置静态文件服务从入门到精通
作者:三十三重天 博客:http://www.zhouhuibo.club 通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施. 引言 使 ...
- nodejs静态web服务
项目准备 Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的 ...
- 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点
一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...
- Nginx作为静态WEB服务
1.静态资源类型 Nginx作为静态资源Web服务器部署配置, 传输非常的高效, 常常用于静态资源处理, 请求, 动静分离 非服务器动态运行生成的文件属于静态资源 类型 种类 浏览器端渲染 HTML. ...
- Web架构之Nginx基础配置
目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...
随机推荐
- Docker安装配置及华为云镜像加速
Docker华为云镜像加速 软件介绍 支持的操作系统 docker安装 docker镜像加速(华为云实现) 1.登录华为云网站,注册华为云账户 2.登录华为云账户,点击网页右上角的控制台 3.点击左上 ...
- Java安全之Weblogic 2018-3248分析
Java安全之Weblogic 2018-3248分析 0x00 前言 基于前面的分析,后面的还是主要看补丁的绕过方式,这里就来简单的记录一下. 0x01 补丁分析 先来看看补丁细节 private ...
- 请谨慎使用 avaliable 方法来申请缓冲区
问题 今天开始尝试用 Java 写 http 服务器,开局就遇到 Bug. 我先写了一个多线程的.BIO 的 http 服务器,其中接收请求的部分,会将请求的第一行打印出来. 下面是浏览器发出的请求和 ...
- Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令
就这三步骤,下面的是实例不看也罢. apt-get update ###第一步一定要先执行这个更新下.不更新下面的安装命令会显示找不到网络包 //ifconfig apt install net-to ...
- 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01
https://mp.weixin.qq.com/s/jfHFXZpzbAEbHKkCMSev6w 对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极 ...
- 初识JavaScript和jQuery
JavaScript 1.特性 ①脚本语言.JavaScript是一种解释型的脚本语言,C.C++.Java等语言先编译后执行, 而JavaScript是在程序的运行过程中逐行进行解释. ②基于对象. ...
- 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 ...
- (002)每日SQL学习:删除名称重复的数据
create table A ( id VARCHAR2(36), name VARCHAR2(100), sl VARCHAR2(36) ); insert all into a (id,name) ...
- CSS 文本效果
对于CSS文本的一些效果,基础一些的知识比较简单,但对于text-indent,vertical-align,text-align等的深入学习能够使我们对HTML5的学习更加轻松,对这部分知 ...
- redis学习教程一《Redis的安装和配置》
redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执 ...