ITPub博客

首页 > 应用开发 > > Nginx 入门到实战-场景实现篇

Nginx 入门到实战-场景实现篇

作者:penny_liang 时间:2019-10-21 09:40:38 0 删除 编辑

作者:海岛

来源:https://segmentfault.com/u/zhengx1


一、静态资源WEB服务

1.静态资源类型

非服务器动态运行生成的文件,换句话说,就是可以直接在服务器上找到对应文件的请求

浏览器端渲染:HTML,CSS,JS

图片:JPEG,GIF,PNG

视频:FLV,MPEG

文件:TXT,任意下载文件

2.静态资源服务场景-CDN

什么是CDN?例如一个北京用户要请求一个文件,而文件放在的新疆的资源存储中心,如果直接请求新疆距离太远,延迟久。使用nginx静态资源回源,分发给北京的资源存储中心,让用户请求的动态定位到北京的资源存储中心请求,实现传输延迟的最小化

2.nginx静态资源配置

二、浏览器缓存

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

减少服务端的消耗,降低延迟

1.浏览器无缓存

浏览器请求 -> 无缓存 -> 请求WEB服务器 -> 请求相应 -> 呈现

在呈现阶段会根据缓存的设置在浏览器中生成缓存

2.浏览器有缓存

浏览器请求 -> 有缓存 -> 校验本地缓存时间是否过期 -> 没有过期 -> 呈现

若过期从新请求WEB服务器

3.语法配置

location ~ .*\.(html|htm)$ {

expires 12h; #缓存12小时

}

服务器响应静态文件时,请求头信息会带上 etag 和 last_modified_since 2个标签值,浏览器下次去请求时,头信息发送这两个标签,服务器检测文件有没有发生变化,如无,直接头信息返 etag 和last_modified_since,状态码为 304 ,浏览器知道内容无改变,于是直接调用本地缓存,这个过程也请求了服务,但是传着的内容极少

三、跨站访问

开发nginx跨站访问设置

location ~ .*\.(html|htm)$ {

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;

#Access-Control-Allow-Credentials true #允许cookie跨域

}

在响应中指定 Access-Control-Allow-Credentials 为 true 时,Access-Control-Allow-Origin 不能指定为 *,需要指定到具体域名

相关跨域内容可参考 Laravel 跨域功能中间件 使用代码实现跨域,原理与nginx跨域配置相同

四、防盗链

防止服务器内的静态资源被其他网站所套用

此处介绍的 nginx 防盗链为基础方式,其它更加深入的方式将在之后的文章介绍

首先,需要理解一个nginx变量

$http_referer #表示当前请求上一次页面访问的地址,换句话说,访问 主页,这是第一次访问,所以 $http_referer 为空,但是 访问此页面的时候还需要获取一张首页图片,再请求这张图片的时候 $http_referer 就为

然后配置

location ~ .*\.(jpg|gif)$ {

#valid_referers 表示我们允许哪些 $http_referer 来访问

#none 表示没有带 $http_referer,如第一次访问时 $http_referer 为空

#blocked 表示 $http_referer 不是标准的地址,非正常域名等

#只允许此ip

valid_referers none blocked 127.xxx.xxx.xx

if ($invalid_referer) { #不满足情况下变量值为1

return 403;

}

}

五、HTTP代理服务

Nginx可以实现多种代理方式

HTTP

ICMPPOPIMAP

HTTPS

RTMP

1. 代理区别

区别在于代理的对象不一样

正向代理代理的对象是客户端

反向代理代理的对象是服务端

2. 反向代理


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/714/viewspace-3168150/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    189
  • 访问量
    1751