Nginx 提高篇

2019-05-19  本文已影响0人  康俊1024

Rewrite的使用

常用指令

  1. “=” 来判断相等,用于字符比较
  2. “~” 用正则来匹配(表示区分大小写),“~*” 不区分大小写
  3. “-f -d -e” 来判断是否为文件、目录、是否存在
if ($request_uri ~ *\.sh ){
  return 403
}

浏览器本地缓存配置及动静分离

语法: expires 60s|m|h|d
操作步骤:

Gzip压缩策略

浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型 -> 服务端会把内容根据浏览器所支持的压缩策略去进行压缩返回 -> 浏览器拿到数据以后解码;
常见的压缩方式:gzip、deflate 、sdch

gzip on|off 是否开启gzip压缩
gzip_buffers 4 16k #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。
gzip_comp_level[1-9] 压缩级别, 级别越高,压缩越小,但是会占用CPU资源
gzip_disable #正则匹配UA 表示什么样的浏览器不进行gzip
gzip_min_length #开始压缩的最小长度(小于多少就不做压缩)
gzip_http_version 1.0|1.1 表示开始压缩的http协议版本
gzip_proxied  (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)
gzip_type text/pliain,application/xml  对那些类型的文件做压缩 (conf/mime.conf)
gzip_vary on|off  是否传输gzip压缩标识

注意事项

  1. 图片、mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会耗费CPU资源。
  2. 太小的文件没必要压缩,因为压缩以后会增加一些头信息,反而导致文件变大。
  3. Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行压缩传输,我们需要手动来配置。

Nginx反向代理

反向代理.jpg
proxy_pass 既可以是ip地址,也可以是域名,同时还可以指定端口。
proxy_pass指定的地址携带了URI,看我们前面的配置【/s】,那么这里的URI将会替换请求URI中匹配location参数部分;如上代码将会访问到http://www.baidu.com/s

负载均衡

upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
语法:server address [parameters]
其中关键字server必选。
address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
parameters是可选参数,可以是如下参数:

  1. down:表示当前server已停用
  2. backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求
  3. weight:表示当前server负载权重,权重越大被请求几率越大。默认是1
  4. max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。

upstream支持的调度算法

  1. ip_hash 根据ip的hash值来做转发
  2. 默认是轮询机制
  3. 权重 weight=x
  4. fair 根据服务器的响应时间来分配请求
  5. url_hash
上一篇下一篇

猜你喜欢

热点阅读