#模块结构
核心模块
1、HTTP模块(代理、缓存、日志定义和第三方模块)
2、EVENTS模块(网络连接)
3、全局模块(全局指令、日志路径、PID路径、用户信息等)
基础模块
1、HTTP全局模块
2、HTTPFastCGI 模块
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模块
目录介绍:
Windows:
conf:存放配置文件目录,包含主配置文件:nginx.conf,是我们经常修改的配置文件
contrib:存放开源爱好者共享代码
docs:存放文档资料
html:默认存放Nginx的错误页面和欢迎页面
logs:默认存放了访问日志,错误日志和Nginx主进程和pid文件
temp:临时目录,存放Nginx运行时产生的临时文件
nginx.exe :可执行程序,常用于Nginx服务启动,停止等管理工作
Linux:
*_temp:共只有5个temp结尾的目录,用于存放Nginx运行产生的临时文件
conf:...
html:
logs:
sbin:存放Nginx的二进制命令,常用于Nginx的启动,停止等管理工作
...... #全局模块
events{
....... #events块
}
http #http块
{
....... http全局块 gzip\upstream\fastcgi
server #server块{
... #server全局块
location【PATTERN】 #location块
{
}
location【PATTERN】 #location块
{
}
}
server{
....
}
........ #http全局块
}
#定义Nginx运行的用户和用户组
# user nobady nobady;
#nginx进程数 建议设置为等于cpu总核心数,默认为1,
worker_processes 8;
#全局错误日志类型:【debug info notice warn error crit】
error_log /user/local/nginx/logs/error.log info;
#进程pid文件,指定nginx进程运行文件存放地址
pid /user/local/nginx/logs/nginx/pid;
#指定进程可以打开的最大描述符:数目
#工作模式与连接数上限
#这个指令是指当前一个nginx进程打开的最多文件描述符数目,理论值应该是最大打开文件数(ulimit -n)
#与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保存一致。
#选择在Linux 2.6内核下开启文件打开数为 65535 ,worker_rlimit_nofile就相应应该填写 65535
#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以加入填写10240 ,总并发数达到3-4w时就##有
#进程可能超过10240了,这时就会返回502错误
worker_rlimit_nofile 65535;
events
{
#参考时间模型 ,use 【kqueue|rtsig |epoll | /dev/poll | select | poll 】;epoll模型
#是Linux 2.6以上版本内核中的高性能网站I/O模型。linux建议epoll,如果跑FreeBSD上面,就用
#kqueue模型
#补充说明
#与apache相类,nginx针对不同的操作系统,有不同的商家模型
#A)标准事件模型
#SELECT 、 poll 属于标准事件模型、如果当前系统不存在更有效的方法,nignx会选择select 或
#poll
#B)高效事件模型
#kqueue:使用FreeBSD 4.1+ , openBSD 2.9+ ,NetBSD2.0 和 MacOS X,使用双处理器的MacOsx系统
#使用kqueue可能造成内核崩溃
#Epoll 使用于Linux内核2.6版本以后的系统
#/dev/poll: 使用于Solaris 7 11/99+ ,HP/UX 11.22+(eventport),IRIX 6.5.15+ 和Tru64 UNIX
#5.14A+
# Eventport: 使用于Solaris 10,为了防止出现内核崩溃的问题,有必要安装安全补丁
user epoll;
#单个线程最大连接数(最大连接数 = 连接数 * 进程数)
#根据硬件调整,和工作进程配合起来调整,尽量大,但是别把cpu跑到100%就行。每个进程允许的最大连接数,理论每台服务器最大连接为 65535
worker_connections 65535;
#keepalive超时时间,默认60s切记这个参数也不能设置过大,否则会导致许多无效http连接占据着nginx的连接数,导致nginx崩溃;
keepalive_timeout 60;
#客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置的分页大小,
#分页大小可以用命令 getconf PAGESIZE 取得
#【root@web001 ~】# getconf PAGESIZE
#4096
#但也有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,loaction,这个指令指定了何时需要检验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_errors on;
}
#设定http服务器,利用它的反向代理提供负载均衡支持
http
{
#文件扩展名与文件类型映射表
include mine.type;
#默认文件类型
default_type application/octet-stream;
#默认编码
#charset utf-8;
#服务器名字的hash表大小
#保存服务器名字的hash表是由指令server_name_hash_max_size 和 server_name_hash_bucket_size 所控制的。参数hash bucket size 总是等于hash表的大小,并且是一路处理器缓存大小的beo
}