之配置文件说明

努力尽今夕,少年犹可夸。这篇文章主要讲述之配置文件说明相关的知识,希望能为你提供帮助。

nginx主配置文件nginx.conf是一个纯文本类型的文件,在安装目录下的conf目录下。配置文件以区块的形式组织的。每个区块以一个大括号“”来表示,整个配置文件中,Main区位于最上层,在Main区下面可以有Events区、HTTP区等层级,在HTTP区中又包含有一个或多个server区,每个server区中又可有一个或多个location区。
主配置文件组织结构:
主配置文件结构:四部
main block:主配置段,即全局配置段,对http,mail都有效
event
...
事件驱动相关的配置

http
...
http/https 协议相关配置段

mail
...
mail 协议相关配置段

stream
...
stream 服务器相关配置段

http配置段
http
...
... 各server的公共配置
server每个server用于定义一个虚拟主机
...

server
...
server_name 虚拟主机名
root 主目录
alias 路径别名
location [OPERATOR] URL指定URL的特性
...
if CONDITION
...




重要参数说明
#启动进程,通常设置成和cpu的数量相等
worker_processes8;
#worker_processesauto;

#为每个进程分配cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

#一个nginx进程可以打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
worker_rlimit_nofile102400;
#模块加载配置文件
include /usr/share/nginx/modules/*.conf;
#指明要加载的模块的路径
/usr/lib64/nginx/modules/
#定worker进程的nice值,设定worker进程优先级:[-20,20]
worker_priority number;

#全局错误日志及PID文件
#错误日志定义等级,[ debug | info | notice | warn | error | crit ]
error_log/usr/local/nginx/logs/error.log info;
#PId文件
pid/usr/local/nginx/nginx.pid;

events

#epoll是多路复用IO(I/O Multiplexing)中的一种方式,可以大大提高nginx的性能。
useepoll;

#单个后台worker process进程的最大并发链接数 (最大连接数=连接数*进程数)
worker_connections10000;

#尽可能多的接受请求.
multi_accepton;

#事件驱动相关的配置
#处理新的连接请求的方法;on指由各个worker轮流处理新请求,Off指每个新请求的到达都会通知(唤醒)所有的worker进程,但只有一个进程可获得连接,造成“惊群”,影响性能,默认值为off,可优化为on
accept_mutex on | off;
#此指令默认为off,即默认为一个worker进程只能一次接受一个新的网络连接, on表示每个woker进程可以同时接受所有新的网络连接
multi_accept on|off;

#调试和定位问题
#是否以守护进程方式运行,默认是on,即守护进程方式,off 用于调试或docker环境
daemon on|off;
#是否以master/worker模型运行nginx,默认为on,当指定off 将不启动worker
master_process on|off;


#设定http服务器,利用它的反向代理功能提供负载均衡支持
http

#设定mime类型,类型由mime.type文件定义,在响应报文中将指定的文件扩展名映射至MIME对应的类型
includemime.types;
#除上面指定的类型外,就为默认的MIME类型,浏览器一般会提示下载
default_typeapplication/octet-stream;
#浏览器直接打开内容,不下载
#default_typetest/html;


#设定日志格式,可以自定义
log_formatmain$remote_addr - $remote_user [$time_local] "$request"
$status $body_bytes_sent "$http_referer"
"$http_user_agent" "$http_x_forwarded_for";

#日志保存路径
access_log/usr/local/nginx/log/nginx/access.log;

#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用必须设为 on
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime。
#是否启用sendfile功能,在内核中封装报文直接发送,默认Off
sendfileon;

#在开启sendfile,on时合并响应头和数据体在一个包中一起发送
tcp_nopush on;

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

#是否在响应报文中的Content-Type显示指定的字符集,默认off不显示
charset charset off;

#是否在响应报文的Server首部显示nginx版本
server_tokens on | off | build | string;


#keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时,keepalive-timeout功能可避免建立或重新建立连接。(节省服务器资源、CPU、内存、网卡)
keepalive_timeout65;

#keepalive超时时间内,客户端到服务器端的最大连接次数为100次,超过100次则重新建立连接。
keepalived_requests 100;

#在keepalived模式下的连接是否启用TCP_NODELAY选项,即Nagle算法,当为off时,延迟发送,每发送一个包就需要确认ACK,才发送下一个包,默认On时,不延迟发送,多个包一次性确认
tcp_nodelayon;
#开启gzip压缩
gzip on;
gzip_min_length1k;
gzip_buffers 4 128k;
gzip_http_version 1.1;
gzip_comp_level4;
#压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快。
#值越大,消耗CPU比较高。
gzip_typestext/plain application/x-javascript text/css application/xml;
gzip_vary on;

#允许客户端请求的最大单文件字节数
client_max_body_size 10m;

#缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;

#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 300;

#后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 300;

#连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 300;

#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 4k;

#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_buffers 4 32k;

#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size64k;

#设定请求缓冲
large_client_header_buffers4 16k;

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

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

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

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

#包含其它配置文件,如自定义的虚拟主机
include vhost/*.conf;


配置案例
server

#监控的端口号
listen80;
server_namewww.baidu.com;

location /
#该站点的信息发布目录
roothtml;
#index的文件的格式
indexindex.html index.htm;


#错误页面跳转
error_page500 502 503 504/50x.html;
location = /50x.html
roothtml;


路径别名alias
alias path;
路径别名,文档映射的另一种机制;仅能用于location上下文
示例:
http://www.devops.com/bbs/index.html

location /bbs注意: /bbs 后建议不要加 /
alias /web/forum/;

--> /web/forum/index.html

location /bbs/
root /web/forum/;

--> /web/forum/bbs/index.html

注意:location中使用root指令和alias指令的意义不同
(a) root,给定的路径对应于location中的/uri 左侧的/
(b) alias,给定的路径对应于location中的/uri 的完整路径

别名配置案例
alias定义路径别名,会把访问的路径重新定义到其指定的路径,如下示例:
server
listen 80;
server_name www.devops.com;
location /
root /data/nginx/html/pc;

#使用alias的时候uri后面如果加了斜杠则下面的路径配置必须加斜杠,否则403
location /about
#当访问about时,访问alias定义的/data/nginx/html/about内容
alias /data/nginx/html/about;
index index.html;




【之配置文件说明】


    推荐阅读