nginx单节点部署( 三 )

  • nginx conf文件详解
nginx.conf由多个块组成 , 最外面的块是main , main包含Events和HTTP , HTTP包含upstream和多个Server , Server又包含多个location 。main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置) 。
– main块设置的指令将影响其他所有设置;
– server块的指令主要用于指定主机和端口;
– upstream指令主要用于负载均衡 , 设置一系列的后端服务器;
– location块用于匹配网页位置 。
这四者之间的关系式:server继承main , location继承server , upstream既不会继承其他设置也不会被继承 。在这四个部分当中 , 每个部分都包含若干指令 , 这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令 , 同时每个部分还可以使用其他HTTP模块指令 , 例如Http SSL模块、HttpGzip Static模块和Http Addition模块等 。
– Nginx的全局配置
user nobody nobody;worker_processes 2;error_log logs/error.log notice;pid logs/nginx.pid;worker_rlimit_nofile 65535; events{use epoll;worker_connections 65536;} 每个配置选项的含义解释如下: user是个主模块指令 , 指定Nginx Worker进程运行用户以及用户组 , 默认由nobody账号运行 。worker_processes是个主模块指令 , 指定了Nginx要开启的进程数 。每个Nginx进程平均耗费10M~12M内存 。建议指定和CPU的数量一致即可 。error_log是个主模块指令 , 用来定义全局错误日志文件 。日志输出级别有debug、info、notice、warn、error、crit可供选择 , 其中 , debug输出日志最为最详细 , 而crit输出日志最少 。pid是个主模块指令 , 用来指定进程pid的存储文件位置 。workerrlimitnofile用于绑定worker进程和CPU ,  Linux内核2.4以上可用 。events事件指令是设定Nginx的工作模式及连接数上限:use是个事件模块指令 , 用来指定Nginx的工作模式 。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll 。其中select和poll都是标准的工作模式 , kqueue和epoll是高效的工作模式 , 不同的是epoll用在Linux平台上 , 而kqueue用在BSD系统中 。对于Linux系统 , epoll工作模式是首选 。workerconnections也是个事件模块指令 , 用于定义Nginx每个进程的最大连接数 , 默认是1024 。最大客户端连接数由workerprocesses和workerconnections决定 , 即Maxclient=workerprocesses*workerconnections 。在作为反向代理时 , maxclients变为:maxclients = workerprocesses * workerconnections/4 。进程的最大连接数受Linux系统进程的最大打开文件数限制 , 在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效 。– HTTP服务器配置
 http{include conf/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_referer" "$http_user_agent" ''"$gzip_ratio"';log_format download '$remote_addr - $remote_user [$time_local] ''"$request" $status $bytes_sent ''"$http_referer" "$http_user_agent" ''"$http_range" "$sent_http_content_range"';client_max_body_size 20m;client_header_buffer_size 32K;large_client_header_buffers 4 32k;Sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 60;client_header_timeout 10;client_body_timeout 10;send_timeout 10;include是个主模块指令 , 实现对配置文件所包含的文件的设定 , 可以减少主配置文件的复杂度 。类似于Apache中的include方法 。default_type属于HTTP核心模块指令 , 这里设定默认类型为二进制流 , 也就是当文件类型未定义时使用这种方式 , 例如在没有配置PHP环境时 , Nginx是不予解析的 , 此时 , 用浏览器访问PHP文件就会出现下载窗口。
log


推荐阅读