nginx.conf文件详解

nginx 文件结构

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

 

下面给大家上一个配置文件,作为理解。

 

  • 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • 5、location块:配置请求的路由,以及各种页面的处理情况。

 

 

 

 

Nginx配置文件详解

#模块结构

核心模块

1、HTTP模(代理、缓存、日志定义和第三方模块)

2. EVENTS模块(网络连接)

3,全局模块(全局指令,日志路径、PID路径、用户信息等)

基础模块

1. HTTP全局模块

2. HTTP FastCGl模块

3. HTTP Gzip模块

4. HTTP server模块(虚拟主机,一个http,可以有多个server)

5. HTTP location模块(请求的路由,各种页面的处理)

6. HTTP Rewrite模块

第三方模块

1. HTTP Upstream Request Hash模块

2. Notice模块

3. HTTP Access Key模块

配置文件详解

定义Nginx运行的用户和用户组

#user nobady nobady

#nginx进程数,建议设置为等于CPU总核心数,默认为

worker_processes 8

#全局错误日志定义类型, [ debug | info I notice I warn I error I crit】

error_1og /usr/local/nginx/logs/error.log info;

#进程pid文件,指定nginx进程运行文件存放地址

pil /usr/local/nginx/1ogs/nginx.pid

#指定进程可以打开的最大描述符:数目14 #工作模式与连接数上限 mocha1115 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit-n)与

nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit-n的值保持一致。16 #现在在7inux 2.6内核下开启文件打开数为65535, worker_r1imit_nofile就相应应该填写6553517 #这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

worker_rlimit-nofile 65535:

events

 

#参考事件模型, use [ kqueue | rtsig | epo11 | /dev/pol1 | select | pol1 ]; epo11模型

#是Linux 2.6以上版本内核中的高性能网络1/0模型, linux建议epo11,如果跑在FreeBsD上面,就用kqueue模型

#补充说明

#与apache相类, nginx针对不同的操作系统,有不同的事件模型

#A)标准事件模型

#Select.po11属于标准事件模型,如果当前系统不存在更有效的方法, nginx会选择select或po11

#B)高效事件模型

#Kqueue:使用于FreeBsD 4.1+, OpenBsD 2.9+, NetBSD 2.0和Macos x.使用双处理器的Macosx系统使用kqueue可能会造成内核崩溃。

#Epo11:使用于Linux内核2.6版本及以后的系统。

#/dev/po11:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+和Tru64UNIX 5.1A+。

#Eventport:使用于solaris 10,为了防止出现内核崩溃的问题, 有必要安装安全补丁。

use epol1;

 

#单个进程最大连接数(最大连接数=连接数*进程数)

#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。

worker_connections 65535;

 

#keepalive超时时间,默认是60s,切记这个参数也不能设置过大!否则会导致许多无效的http连接占据着nginx的连接数,终nginx崩溃!keepalive__imeout 60;

客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置, 一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。#分页大小可以用命令getconf PAGESIZE取得。[root@webo01 ~]# getconf PAGESIZE#4096 mocha1但也有client-header-buffer-size超过4k的情况,但是client-header-buffer-size该值必须设置为“系统分页大小”的整倍数。

client_header_buffer_size 4k;

#这个将为打开文件指定缓存,默认是没有启用的, max指定缓存数量,建议和打开文件数一致, inactive是指经过多长时间文件没被请求后删除缓存,

open_file_cache max=65535 inactive=60s;

#这个是指多长时间检查一次缓存的有效信息。

#语法: open_file_cache_valid time默认值:open-file_cache_valid 60使用字段:http,server, location这个指令指定了何时需要检查open-file-cache中缓存项目的有效信息.

open_file_cache_valid 60s

#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

语法:open_file-cache_min_uses number默认值:open-file_cache_min-uses 1使用字

段:http, server, location 这个指令指定了在open-file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态

open_file_cache_min_uses 1

语法:open-file_cache_errors on | off默认值:open_file_cache_errors off使用字段:http, server, location这个指令指定是否在搜索一个文件是记录cache错误

open_file_cache_errors on

 

#设是http服务器,利用已时反可代理功能提供员载均衡支持

http{

#文件扩展名与文件类型映射表

include mime.types;

 

#默认文件类型

default_type application/octet-stream;

#默认编码

#charset utf-8;

#服务器名字的hash表大小

#保存服务器名字的hash表是由指令server_names-hash_max-size和server_names-hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,m并品是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hashbucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键值。因此,如果Nginx给出需要增大hash max size或hash bucket size的提示,那么首要的是增大前一个参数的大小.

server_names_hash_bucket_size 128;

#客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得

client_header_buffer_size 32k;

 

#客户请求头缓冲大小。nginx默认会用client-header-buffer-size这个buffer来读取header值,如果header过大,它会使用1arge_client-header_buffers来读取。

large_client_header_buffers 4 64k;

 

#设定通过nginx上传文件的大小client_max_body_size 8m;

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

#sendfiTe指令指定nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用必须设为on。如果用来进行下载等应用磁盘10重负载应用,可设置为off,以平衡磁盘与网络10处理速度,降低系统uptime.

sendile on;

开启目录列表访问,合适下载服务器,默认关闭。

autoindex on

 

#此选项允许或禁止使用socke的TCP-CORK的选项,此选项仅在使用sendfile的时候使用,告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。就是说数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞

tcp_nopush on;

告诉nginx不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值

tcp_nodelay on;

#长连接超时时间,单位是秒keepalive_timeout 120:

 

 

FastCGI

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看宁面意思都能理解。#这个指令为FastCG1缓存指定一个路径, 目录结构等级,关键字区域存储时间和非活动删除时间

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST: minactive=5m;

#指定连接到后端FastCGI的超时时间

fastcgi_connect_timeout 300;

#向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间

fastcgi_send_timeout 300:

#接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间

fastcgi_read_timeout 300;

#指定读取FastCGI应答第一部分需要用多大的缓冲区,这里可以设置为fastcgi-buffers指令指定的缓冲区大小,上面的指令指定它将使用1个16k的缓冲区去读取应答的第一部分,即应答头,其实这个应答头一般情况下都很小(不会超过1k) ,但是你如果在fastcgi-buffers指令中指定了缓冲区的大小,那么它也会分配一个fastcgibuffers指定的缓冲区大小去缓存

fastcgi_buffer_size 64k;

#指定本地需要用多少和多大的缓冲区来缓冲FastCG1的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大于256k的部分会缓存到fastcgi-temp指定的路径中, 当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小256k就可以把这个值设置为16 16k,或者4 64k或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理.

fastcgi_buffers 4 64k;

#这个指令我也不知道是做什么用,只知道默认值是fastcgi-buffers的两倍

fastcgi_busy_buffers_size 128k;

#在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi-buffers的两倍

fastcgi_temp_file_write_size 128k;

#开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。但是这个缓存会引起很多问题,因为它缓存的是动态页面。具体使用还需根据自己的需求

fastcgi_cache TEST

#为指定的应答代码指定缓存时间,如上例中将200, 302应答缓存一小时, 301应答缓存1天,其他为1分钟

fastcgi_cache_valid 200 302 1h;

fastcgi_cache_valid 301 1d;

fastcgi_cache_valid any 1m;

#缓存在fastcgi-cache-path指令inactives数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除

Fastcgi_cache_min_uses 1;

 

 

#gzip模块设置

#开启压缩

gzip on;

#设置允许压缩的页面最小字节数,页面字节数从header头得content-1ength中进行获取。默认值是0.不管页面多大都压缩。建议设置成大于2k的字节数,小于2k可能会越压越大。

gzip_min_ength 2k;

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

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

gzip_buffers 4 16k

#压缩级别, 1-10,数字越大压缩的越好,也越占用CPU时间

gzip_comp_1evel 5;

#默认值: gzip_types text/html (默认不对js/css文件进行压缩)压缩类型,匹配MIME类型进行压缩

#不能用通配符text/*(无论是否指定)text/htm1默认已经压缩,设置哪压缩种文本文件可参考conf/mime . types

gzip_types text/plain application/x-javascript text/css application/xml

#值为1.0和1.1代表是否压缩http协议1.0,选择1.0则1.0和1.1都可以压缩

gzip_http_version 1.0

#1E6及以下禁止压缩

gzip_disable "MSIE [1-6]\.";#默认值: off

#Nginx作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含"via"的header头。

off-关闭所有的代理结果数据的压缩

expired -启用压缩,如果header头中包含"Expires"头信息

# no-cache-启用压缩,如果header头中包含"cache-Control:no-cache"头信息

no-store-启用压缩,如果header头中包含"cache-Control:no-store"头信息

#private-启用压缩,如果header头中包含"cache-Control :private"头信息

# no-last_modified -启用压缩,如果header头中不包含"Last-Modified"头信息

 

 

带点拟主机的配置server

#监听端口

listen 80;

带域名可以有多个,用空格隔开

server_name www.xx.com xx.com;

index index.html index.htm index.php;

root /data/www/xx;

#对**进行负载均衡

location~.*. (phplphp5)?$

{

fastcgi_pass 127.0.0.1:9000;.

fastcgi_index index.php;

include fastcgi.conf

}

 

#图片缓存时间设置

location ~.*. (gif ljpg ljpeglpng lbmp swf)$

{

expires 10d;

}

#JS和CSS缓存时间设置

location -.*.(js|css)?${

expires Ih;

}

 

 

 

该配置文件是我学习的视屏截图。如果侵权,请联系我删除。谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值