nginx的详细使用说明(中)

在详细使用说明上里,对nginx的一个部分已经进行了说明。这节开始解析http部分。 php

在当前个人nginx.conf的配置以下: html


 

能够看到配置项仍是很是多的(这是LNMP包自动默认的配置选项)。 前端

1.Include   mime.types   这是nginx加载当前的一个mime.types类型打开,能够看到该文件对应的是 java

 


 

这里大体说明下mime.types的概念:主要是接收到一个对应后缀的文件后,本地浏览器会根据对应的文件类型按照特定的格式进行解析(这样咱们才能把文件和声音按照正确的格式在浏览器前面显示出来,例如Content-type: text/html 这是告诉浏览器该文本是html文件,请按照html文件进行解析)这个配置会让nginx根据不一样的文件后缀赋予不一样的文件头。(若是你本身制造了一种文件后缀,又没有在这里进行说明,前端就没法识别类型,从而可能出现没法加载的状况) nginx

2.default_type  默认类型mime设置(当出现没法识别的后缀名的时候,会告诉浏览器是该类型) 这里application/octet-stream  这表明任意的二进制数据传输。  算法

告诉浏览器,当默认没有设定mime.types的时候,用二进制数据传输格式进行传递 后端

3. 浏览器

  配置多个虚拟机server的时候,这个是必须填的。不然会启动失败(默认状况下是没有该配置的) 缓存

该功能说明:保存服务器名字的hash表(hash表就是服务器的惟一识别标记,用空间换取时间的时候进行使用,可让系统最快速的找到对应的访问的服务器) 服务器

server_names_hash_max_size 和 server_names_hash_bucket_size俩个参数是用来决定域名名字的hash大小参数

4.

  客户端header头部缓存大小限定(在http通信的时候,文档以前都有一个header的,能够用这个参数来控制对客户端头部信息的输出)

   这几个参数的做用顺序是,会优先分配一个内存给一个主机,若是发现不够用,就会分配large_client_header_buffers 的数值。主要是用来避免没必要要的内存浪费。若是再次超过了最大的设置,直接报错 414。另外该参数是能够在server的配置里面进行覆盖掉外部的默认设置的。Client_max_body_size 限制输出长度的,这个比较容易理解。

5.sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,若是用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,下降系统的负载。注意:若是图片显示不正常把这个改为off

6.Tcp_nopush;

  防止网络阻塞使用:表示达到最大值后,一次性发送输出去(对于大网页文件特别须要到了最大的负荷后发出去,频繁的发出数据容易引发网络阻塞,该参数默认是开启的)

7.

  该参数的配置有点抽象,在tcp协议里,TCP_NODELAYTCP_CORK基本上控制了包的“Nagle化”,TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。(不然对每一个很是小的响应都会自带一个数据包造成网络阻塞,关闭后能够更快的进行响应)

8.

  客户端的链接时间 这个是比较容易理解的。

9.

  由于传统的cgi有太多漏洞,nginx对其是不支持的,因此默认状况下,nginx都是采用fastcgi的模式进行访问。而php5.0之后内置了fastcgiserver里面会引入对应执行php,这里默认fastcgi的运行支持

  fastcgi_connect_timeout=300; #链接到后端fastcgi超时时间

fastcgi_send_timeout=300; #fastcgi请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)

fastcgi_rend_timeout=300; #接收fastcgi应答超时时间,同理也是2次握手后

fastcgi_buffer_size=64k; #读取fastcgi应答第一部分须要多大缓冲区,该值表示使用164kb的缓冲区读取应答第一部分(应答头).

fastcgi_buffers 4 64k;#指定本地须要多少和多大的缓冲区来缓冲fastcgi应答请求,假设一个phpjava脚本所产生页面大小为256kb,那么会为其分配464kb的缓冲来缓存;若页面大于256kb,那么大于的256kb的部分会缓存到fastcgi_temp指定路径中,这并不是是个好办法,内存数据处理快于硬盘,通常该值应该为站点中php/java脚本所产生页面大小中间值,若是站点大部分脚本所产生的页面大小为256kb,那么可把值设置为16 16k,4 64k

fastcgi_busy_buffers_size 128k; #默认值是fastcgi_buffer2

fastcgi_temp_file_write_size 128k;#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer2

10.gzip模块一部分解释


gzip on|off

默认值: gzip off

开启或者关闭gzip模块 

gzip_min_length  1k

默认值: 0 ,无论页面多大都压缩

设置容许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024 

gzip_buffers 4 16k

默认值: gzip_buffers 4 4k/8k

设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k 表明以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 表明以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。

若是没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。 

gzip_http_version 1.0|1.1

默认值: gzip_http_version 1.1(就是说对HTTP/1.1协议的请求才会进行gzip压缩)

识别http的协议版本。因为早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,因此作一些判断仍是有必要的。

注:99.99%的浏览器基本上都支持gzip解压了,因此能够不用设这个值,保持系统默认便可。

假设咱们使用的是默认值1.1,若是咱们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/1.0协议通讯的,若是咱们使用nginx经过反向代理作Cache Server,并且前端的nginx没有开启gzip,同时,咱们后端的nginx上没有设置gzip_http_version1.0,那么Cacheurl将不会进行gzip压缩

相关文章
相关标签/搜索