nginx的配置参数以及变量

一、配置详解

  1. daemon:是否以守护进程的方式运行nginx
    daemon on | off ,默认值为on;
  2. master_process:是否以master/worker方式工作
    master_process on | off ,默认值为on;

在大多数情况下nginx还是以master进程管理多个worker进程的方式运行的,关闭了master_process之后nginx将以master进程来处理请求

  1. error_log:日志的设置; 格式: /path/file level, 默认值为error_log logs/error.log error;
  • /path/file参数为一个具体的文件。
  • level的值可为:debug,info,notice,warn,error,crit,alert,emerg。
  • level的级别从左往右级别依次增大,当设定一个级别时,大于或等于改级别的日志都会被输出到path/file文件中,小于该级别的日志则不会输出。
  1. env:定义环境变量
    env VAR | VAR=VALUE
    这项配置能够让用户直接设置操作系统上的环境变量。
  2. include:嵌入其他配置文件
    include配置能够将其他配置文件嵌入到当前的nginx.conf中,他的参数可以是绝对路径,也可以是相对路径(相对路径主目录为nginx.conf所在目录)。
  3. pid:配置pid文件的路径( path/file)
    pid文件保存着master进程id。该文件会直接影响nginx的服务运行。
  4. user:nginx worker进程运行的用户及用户组
    user username [groupname],默认值为nobody;
    user用于配置master进程启动后,fork出的worker进程运行在哪个用户和用户组下。
  5. worker_rlimit_nofile:指定nginx进程可以打开的最大文件个数。
    worker_rlimit_nofile limit;
  6. worker_process:nginx的worker进程数,默认值1;

在master/worker运行的方式下,定义worker进程的个数。worker进程的数量直接影响性能。worker进程的配置与我们的实际业务需求有关,每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果能够确定这些模块不会出现阻塞的调用,那么有多少CPU内核就应该配置多少个进程;反之,如果可能出现阻塞式调用,那么需要配置稍多一些的worker进程。多个worker进程能够充分利用多核系统架构,但若worker进程的数量多于CPU内核数,那么会增大进程间的切换带来的消耗。

  1. worker_cpu_affinity:绑定nginx worker进程到指定的cpu内核。
 worker_cpu_affinity cpumask;  
 worker_process 4;  #开启4个进程
 #2核cpu,开启4个进程 
 worker_cpu_affinity 01 10 01 10; 
 #4核cpu,开启4个进程 
 worker_cpu_affinity  1000 0100 0010 0001;

为什么一定需要绑定CPU内核?假设每个worker进程都是非常繁忙的,如果多个worker进程都在抢同一个CPU,那么这就会出现同步问题。反之如果每个进程都是独享一个CPU,就在内核调度策略上实现了完全的并发。

  1. ssl_engine device:硬件加速

如果服务器上有ssl硬件加速设备,那么就可以进行配置以加快ssl协议的处理速度,可以通过OpenSSLengine
-t命令查看是否具备ssl硬件加速设备

  1. worker_priority: nginx进程的优先级设置(指明worker进程的nice值)
    worker_priority nice;默认值为0;
  2. accept_mutex:是否打开accept锁
    accept_mutex on | off,默认值为on;

accept_mutex是nginx的负载均衡锁,accept_mutex这把锁可以让多个worker进程轮流的,序列化的与新的客户端建立tcp连接。当某一个worker进程建立的连接数量达到worker_connections配置的最大连接数的7/8时,会大大地减小这个worker进程试图建立新tcp连接的机会,以此实现所有worker进程之上处理的客户端请求数量接近。

  1. lock_file:lock文件的路径
    lock_file path/file,默认值:lock_file logs/nginx.lock;
    accept锁需要这个文件,如果accept锁关闭,lock_file配置完全不生效。
  2. accept_mutex_delay
    使用accept锁后到真正建立连接之间的延迟时间,默认:accept_mutex_delay 500ms;

在使用accept锁后,同一时间只有一个worker进程能够取到accept锁。这个accept锁不是阻塞锁,如果取不到会立刻返回。如果有一个worker进程试图取accept锁而没有取到,它至少要等accept_mutex_delay定义的时间间隔后才能再次试图取锁。

  1. multi_accept: 批量建立新连接
    multi_accept[on]off],默认: multi_accept off,

当事件模型通知有新连接时,尽可能地对本次调度中客户端发起的所有TCP请求都建立连接。

  1. use: 选择事件模型
    use[ kqueue]rtsiglepoll/dev/pollselectpollleventport];默认:Nginx会自动使用最适合的事件模型。

对于Linux操作系统来说,可供选择的事件驱动模型有poll、select、epoll三种。epoll当然是性能最高的一种,epoll可以处理大并发连接。

  1. worker_connections:每个worker的最大连接数
    worker_connections number;
    定义每个worker进程可以同时处理的最大连接数。
  2. 全局变量
    $args 变量中存放了请求URL中的请求指令。比如
    http:/www.xxxx.com/index/index?argl=valuel&arg2=value2中的“argl=valuel&arg2=value2”

$content_length 变量中存放了请求头中的Content-length字段
$content_type 变量中存放了请求头中的Content-type字段
$document_root 变量中存放了针对当前请求的根路径
$document_uri 变量中存放了请求中的当前URI,并且不包括请求指令,比如 http://www.xxxx.com/index/index?argl-value1&arg2-value2中的“/index/index
$host 变量中存放了请求URL中的主机部分字段、比如http://www.xxxx.com/index中的"“www.xxxx.com”。如果请求中 的主机部分字段不可用或者为空,则存放Nginx配置中该server块中
server_name指令的配置值
$http_user_agent 变量中存放客户端的代理信息
$http_cookie变量中存放客户端的cookie信息
$limit_rate 变量中存放Nginx服务器对网络连接速率的限制,也就是Nginx 配置中 limit_rate指令的配置值
$remote_addr 变量中存放了客户端的地址
$remote_port 变量中存放了客户端与服务器建立连接的端口号
$remote_user 变量中存放了客户端的用户名
$request_body_file变量中存放了发给后端服务器的本地文件资源的名称
$request_method 变量中存放了客户端的请求方式,如""GET”、“POST等
$request_filename 变量中存放了当前请求的资源文件的路径名
$request_uri 变量中存放了当前请求的URI,并且带请求指令
$query_string 与变量Sargs含义相同
$scheme变量中存放了客户端请求使用的协议,比如“http”、“https”和“ftp”等
$server_protocol变量中存放了客户端请求协议的版本,比如“HTTP1.0”、"HTTP/1.1”等
$server_addr 变量中存放了服务器的地址
$server_name 变量中存放了客户端请求到达的服务器的名称
$server _port 变量中存放了客户端请求到达的服务器的端口号
u r i 与变量 uri 与变量 uri与变量document_uri含义相同

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值