Nginx进阶二

Nginx进阶二

Nginx进阶二

Nginx进阶二

Nginx中间件配置语法:文件读取

sendfile on|off  默认off   现在有一种新的技术-with-file-aio异步文件读取

tcp_nopush on|off 默认off 在sendfile开启的情况下,提高网络包的报文传输效率,就是多次请求一次wanc

tcp_nodelay on|off 默认 on 和nopush对应,在keepalive连接下,提高网络包的传输实时性

gzip on | off 默认off 压缩传输  其实还要用到一些配置就是压缩比 gzip_comp_level level;默认gzip_comp_level 1;

压缩协议的版本gzip_HTTP_version 1.0|1.1 默认1.1 好

http_gzip_static_module 预读gzip功能,找有没有这种的压缩包

http_gunzip_module-应用支持gunzip的压缩方式。很少很少用到


二,浏览器缓存

http协议定义缓存机制(如expires  1.0版本;cache-contol:1.1版本等)

etag保存的是字符串,Last—Modified是时间,先判断cache-contol或者expires有没有过期,过期了再用etag和last_modified来访问服务端数据有没有更新

Nginx进阶二

配置语法:-expires 添加Cache-Control、Expires头


expires [modified] time;

 expires epoch | max |off

默认:expires off

三:跨越访问,一般服务器都会禁止客户端跨域仿问


打个比方:请求一个网站的时候因为ajax的缘故,又访问了不同的页面或者不良网00站

这样不良网站既可以通过客户端的ckeer或者其他协议攻击好的网站

Nginx进阶二

配置语法:

add_header name//(一般为Access-Control-Allow-Origin 这个头)value[always]

列:

add_header Access—Control-allow-origin http://www.jesonc.com;

add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;请求方法

防盗链

防止资源被盗用,区别哪些是正常用户

基于http_refer防盗链配置模块,http_refer是http头的模块

vaild_referers//表示哪些referer信息可以访问访问 none//表示没有带referer信息的过来| blocked//一些特别的访问也是可以的,比如没有头 |server_name | string.....,

默认:-

context:server,location

http_refer是nginx的变量信息,可以去nginx配置文件的log_format里面查看

上一次访问的地址,

例:valid_referers none blocked 116.62.103.228 ~/google\./ //谷歌过来的也不隐蔽正则的匹配也是可以的

if($invalid_referer){

return 403;

}

二代理服务

Nginx进阶二

Nginx进阶二

RTMP表示流媒体

正向代理:翻墙,通过国外的电脑访问一些想访问的网站,页面等

反向代理:客户端访问代理,不知道那些服务器,代理负责查找相应的服务器

正向代理的对象是客户端,反向代理的对象是服务端

配置语法:

proxy_pass url//http,https.......

查看nginx启用的端口:netstat -luntp | grep nginx

在配置中server_name localhost hufangwenhaha.io  //表示本机的域名为hufangwenhaha.io

$http_x_forwarded_for 里包含了代理和客户端的信息,ip,地址。。

正向代理:

if($http_x_forwarded_for !~* "^192.138.1.1"){

   return 403;//也就是说只有192.138.1.1可以访问,做到权限控制

}

这样可以在192.138.1.1这台机器上配置

location  / {

proxy_pass http://$需要访问的主机域名$需要的参数,访问的页面等等;。相当于跳转

}

reslover 8.8.8.8 表示dns解析的,nginx解析域名的时候需要dns解析,这个是谷歌的dns

接下来可以在浏览器上配置代理了,

其他配置语法-缓冲区

proxy_buffering on | off 默认on 减少io资源

扩展:proxy_buffer_size ,proxy_buffer,proxy_busy_buffers_size缺点是,需要更大的内存

http301代表重定向。

跳转重定向

Nginx进阶二一般默认就好

头信息

让后端服务器可以看到客户端的头信息非$http_x_forwarded_for得时候

proxy_set_heard field value;默认proxy_set_heard Host $pory_host;proxy_set_heard Connection class;

扩展:proxy_hide_header//隐藏 ,proxy_set_body

超时

proxy_connect_timeout time 默认60秒 扩展 proxy_read_timeout//建立连接的情况下,访问服务器时间,proxy_send_timeout//响应的时间

Nginx进阶二如果缓存过大,超过了忙碌的界限,就会使用文档来存储了

企业在的配置

在大的项目中一般需要配置多份这个。可以建立一个文件,把公共的东西配置放里面,可以用include来导入


负载均衡

GSLB是全局负载均衡,范围非常广

Nginx进阶二一般不回去搭建而是运用云或者第三方设备

我们用的最多的是slb,调度节点和服务节点在一个域里面

Nginx进阶二nginx是就是slb

用模型划分slb,osi的模型分为四层负载均衡,和七层负载均衡

四层的效率非常高,作用是包的转发,只要对底层进行处理,不需要复杂的逻辑处理

与之对应的是七层负载均衡,在运用层,可以完成很多应用方面协议的请求(nginx)

负载均衡用到的就是代理和upstream

配置语法:

upstream name {.....}默认—— centext:http

例:iptables -I INPUT -p tcp --dport 8002 -j DROP //表示访问8002的访问全部drop掉

iptables -F 表示吧刚才iptables的效果去掉

upstream imooc//这个地方自己自定义{     //upstream:逆流而上

server 116.62.103.228:8001;//不止是ip的写法,也可以是域名的写法

server 116.62.103.228:8002;  weight=5,在后面也可以加这个,表示权重循环的比重

server 116.62.103.228:8003;backup表示这是备份节点,其它节点都没用了,才用它

}

down:当前的server暂时不参加负载均衡

backup:预留当前的备份服务器

max_fails:允许请求失败次数

fail_timeout 进过max_fails失败后,服务暂停的时间

max_conns 限制最大的接收的连接数

server_name localhost hufangwen hufangwen代表这是域名

nginx负载均衡原来的做法是轮询,这样有缺点,cooker会有问题,每次访问不一致

Nginx进阶二

Nginx进阶二把其它的权重的东西去掉,但也有缺点,如果再加一层代理就无法实现ip的一致性,会出大问题

为了解决上面的所有问题出现了url-hash,用url来确认服务器,可以确保每一次访问都在一台服务器上面,使每次的请求获取的数据一致。

语法:

hash key [consistent]; 默认—— context:upstream 在1.7以后才有

Nginx进阶二request_url代表请求参数,每次的请求request_url一致的时候,会定义到一台服务器上


在请求中有很长的请求参数,可以用正则表达提取出来,判定

缓存服务(也叫代理缓存)

减少后端压力

Nginx进阶二设置缓存文件目录路劲,来存放缓存文件的

proxy_cache zone//proxy_cache 的key的名字 | off  默认 off  context:http,server,location

缓存过期周期

prxcy_cache_valid [code.....]//返回状态码 time; //时间周期

缓存维度设置

proxy_cache_key string   默认 proxy_cache_key $scheme//协议$proxy_host//域名server-name$request_uri;

例:Nginx进阶二

Nginx进阶二

levels代表两层目录,分级了

key_zone:表示开辟的zone空间的名字,下面调用的就是这个名字,10m表示开辟空间的大小lm=8000key

max_size=10g表示目录的大小,最大10G

inactive=60m,不活跃的,在60分钟内没有数据访问,删除

use_temp_path=off,表示存放临时文件的,建议关闭

proxy_cache表示开启缓存

proxy_pass:表示代理

proxy_cache_vaild 200 304 12h,表示返回的200 和304 过期时间是12小时

add_header //表示添加头文件给客户端,名字是Nginx_cache

最后的proxy_next_upstream 表示如果请求服务器出问题,跳过它,访问下一台

清除缓存:1.rm -rf 缓存目录内容  2.第三方扩展模块ngx_cache_purge,清除指定文件

让指定的url页面不缓存

proxy_no_cache string.......;可以定义正则表达式,判断需不需要缓存,1代表不缓存

例:Nginx进阶二

大文件分片请求

slice size 默认slice 0

把大文件切割成小片,均匀的访问后端服务器

优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他不受影响

缺点:当文件很大,或者slice很小的时候,可能导致文件描述符耗尽的情况