Nginx配置文件详解

下面我们来分析nginx配置文件的组成:

一.简要介绍:

1.nginx的配置文件分为两个部分:

核心配置段:Main 配置段

对应协议配置段:如http{...}

2.配置指令以分号结尾,语法格式:

directive value1 [value2……]:

支持使用变量:

模块内置变量

自定义变量

set var_name value

3.主配置段指令的类别:

用于调试,定位问题的配置;

正常运行必备配置;

优化性能的配置;

事件相关配置:主控进程以root启动,worker进程是以普通用户运行

二.主配置段文件详解:

A.正常运行的必备配置;

1.user USERNAME[GROUPNAME]

指定运行worker进程的用户和组;

user nginx nginx;

2.pid /path/to/pid_file

指定pid文件

3.worker_rlimit_nofile  #;

指定一个进程所能打开最大文件句柄数;

4.worker_rlimit_sigpending  #;

指定每个用户能够发往worker进程的信号的数量;

B.优化性能相关配置:

1.worker_processes 1;

启动的worker线程个数;通常为物理CPU核心数减1;

2.worker_cpu_affinity cpumask……;

绑定启动的worker进程到指定的CPU上;

CPU个数<进程数,服务器需要发生进程切换;nginx工作在一个进程响应多个请求的模型下,多个worker进程在没有请求的情况下工作在睡眠态,只有有请求到达后内核调用worker进程到CPU中执行,这样就会造成上下文切换和进程会在CPU上制造缓存,执行完成后worker进程会退出CPU进入睡眠态,缓存失效,而后来进入的worker进程会重新生成缓存,造成服务器性能降低。

可以在系统启动时将除了系统启动的其他CPU隔离出来,绑定worker进程到指定CPU上,CPU的使用权就是特定的worker进程,可以大大提高服务器性能。

cpumask:CPU掩码

0001

0010

0100

1000

如:

worker_cpu_affinity 0000001 00000010 00000100

3.timer_resolution t;

时间解析度,值大些好,越小越精致,但是消耗大,在x86_64系统上可以不设置;

指的是每一次内核调用返回时都会使用gettimeoutday()系统调用来更新nginx的缓存时钟,time_resolution定义每隔多久gettimeoutday更新一次缓存;更新越频繁系统压力越大;

4.worker_priority nice;

让worker以指定nice值工作,-20~19

nice值越高就会优先获取CPU资源;

nginx默认状态下的nice值为0:

[root@www ~]# ps axo pid,command,nice |grep nginx

4530 nginx: master process /usr/  0

4532 nginx: worker process        0

4613 grep nginx                    0

C.事件相关配置:

1.accept_mutex [on|off]

mutex:互斥锁,是否打开nginx的内部负载均衡锁

内部调度用户请求到各worker时用的负载均衡锁,打开时表示让多个worker进程轮流的,序列化的响应新请求;

2.lock_file  /path/to/lock_file;

锁文件

3.accept_mutex_delay  #ms;

内部的负载均衡锁在接收请求时的请求延迟,一个worker进程为了等待获取互斥锁要等待的时间延迟;

4.use [epoll|rgsig|select|poll]

指明定义使用何种事件模型的;建议让nginx自动选择

5.worker_connections  #;

每个worker进程所能响应的最大并发请求数

D.用于调试定位问题:

1.deamon [off|on]

是否以守护进程模式启动nginx,发生问题时关闭所有信息发送到前台

2.master_process [on|off]

是否以master/worker模式来运行nginx,发生问题时关闭,只启动master,让所有请求直接发送给master执行响应;

3.error_log  /path/to/error_log  level;

错误日志文件及其级别;出于调试的目的,可以使用debug级别,但此级别只有在编译nginx时使用 了--with-debug选项才有效;

--------------------------------------分割线 --------------------------------------

CentOS 6.2实战部署Nginx+MySQL+PHP

使用Nginx搭建WEB服务器

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

CentOS 6.3下Nginx性能调优

CentOS 6.3下配置Nginx加载ngx_pagespeed模块

CentOS 6.4安装配置Nginx+Pcre+php-fpm

Nginx安装配置使用详细笔记

Nginx日志过滤 使用ngx_log_if不记录特定日志

--------------------------------------分割线 --------------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d252b024b0c82a579379f43f70e1ec01.html