标签:文件 传输 设置 发送 uri day 目的 电脑 介绍
具体配置项介绍:主语句块配置:
Main 全局配置段常见的配置指令分类
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
相关配置:
1 user [username groupname]:以哪个用户的身份运行
2 pid /path/to/pidfile_name:指定nginx的pid文件
注意:
1 进程结束pid文件自动删除
2 所在路径应该对所有者开放写权限
3 include file | mask
指明包含进来的其它配置文件片断
4 load_module file:模块加载
模块加载配置文件:/usr/share/nginx/modules/*.conf
指明要装载的动态模块路径: /usr/lib64/nginx/modules
性能优化相关配置:
1 worker_processes [n]:work进程的个数
注意:设置在主配置段
通常其数值为cpu的物理核心数减1[非固定]
auto --自动根据电脑cpu数量生成
具体设置:
[root@www19:15:31nginx]#ps aux | grep nginx
root 1328 0.0 0.4 120796 2236 ? Ss 19:15 0:00 nginx: master process /usr/sbin/nginx
nginx 1329 0.0 0.6 121180 3120 ? S 19:15 0:00 nginx: worker process
nginx 1330 0.0 0.6 121180 3120 ? S 19:15 0:00 nginx: worker process
nginx 1331 0.0 0.6 121180 3120 ? S 19:15 0:00 nginx: worker process
2 worker_cpu_affinity [cpumask]:把进程绑定到固定cpu
0000:一颗都不用
0001:第0颗cpu
0010:第一颗cpu
0100:第二颗cpu
1000:第三颗cpu
0011:使用第0颗和第一颗cpu
具体用法:设置在主配置段
worker_cpu_affinity 0001 0010 0100 1000;
只能保证这几个进程各自再一个cpu上运行,并不能保证
cpu上不能运行其他进程
ps axo psr,pid,cmd --查看cpu绑定情况
具体设置:
worker_cpu_affinity 0001 0010 0100;
效果:
[root@www19:18:22~]#ps axo pid,cmd,psr | grep nginx
1328 nginx: master process /usr/ 2
1374 nginx: worker process 0
1375 nginx: worker process 1
1376 nginx: worker process 2
3 worker_priority [nice值]:nice值越小越优先调用
-20---19之间的值
指定worker进程的nice值,在主配置段设置!
初始nice值都是0:
[root@www19:19:42~]#ps axo pid,cmd,psr,ni | grep nginx
1328 nginx: master process /usr/ 2 0
1374 nginx: worker process 0 0
1375 nginx: worker process 1 0
1376 nginx: worker process 2 0
设置nice值:
worker_priority 10;
效果:
[root@www19:24:21~]#ps axo pid,cmd,psr,ni | grep nginx
1328 nginx: master process /usr/ 3 0
1420 nginx: worker process 0 10
1421 nginx: worker process 1 10
1422 nginx: worker process 2 10
4 worker_rlimit_nofile [n]:
指定一个worker进程所能够打开的最大文件数
设置在主配置段
每响应一个用户请求,都会相应的打开一个socket文件
具体设置:
worker_rlimit_nofile 10240;
测试:
ab -c 1025 -n 4000 http://172.20.23.48/
这时候是不能成功测试的!
因为打开文件的数量还取决于,系统上默认的设置可以使用:
ulimit -a来查看:open files (-n) 1024
更改配置文件:/etc/security/limits.conf
<domain> <type> <item> <value>
Apache hard nofile 3000
nginx hard nofile 4000
配合ulimit -n [n]:n=限制打开的文件数量
5 ssl_engine device:
再存在ssl硬件加速器的服务器上,
指定所使用的ssl硬件加速设备
6 timer_resolution [n]:
每隔多少时间返回一次-每次内核事件调用,返回时都会使用gettimeofday()这个系统
调用来获取系统时间,来更新nginx缓存时钟!
现在x86_64系统上,gettimeofday的代价已经很小,不设置也没问题
事件驱动相关配置:
1 use [epoll|rtsig|select|poll];
定义使用的事件模型,建议让nginx自动选择 ,linux中一般是epoll
2 worker_connections [n];
每个worker能够并发响应的最大请求数
如果是web服务器:这数值要略小于worker_rlimit_nofile [n]
如果是代理服务器,worker_rlimit_nofile [n]应该是这个数值的2倍
和ulimit -a限制的打开文件数有关!
3 accept_mutex [on|off]:
是否打开nginx的负载均衡锁,此锁能够让多个worker进程
轮流的,序列化的与新的客户端建立TCP连接,而通常当一个worker
进程的负载达到其上限的7/8时,maseter就尽可能不在将请求调度此worker
on--轮流处理请求
off--会通知所有进程,但最终只有一个进程响应,造成"惊群现象"影响性能
4 multi_accept {on|off};
是否允许一次性地响应多个用户请求,默认为off
5 accept_mutex_delay [n]毫秒;
accept锁模式中,一个worker进程为取得accept锁的
等待时长,[如果某worker进程在某次试图取锁失败后只有等待n毫秒后才能再次锁]
默认是500毫秒
调试|测试相关配置:
1 daemon [on|off];
是否让nginx运行于后台默认为on,调试时可以设置为off,使得所有信息直接输出于
控制台!设置于主配置段!制作docker镜像时,需要设置为off
2 master_process[on|off];
是否以一个master管理多个进程的方式运行,默认是on
为了调试追踪,可以设置off,就不会在有worker进程
3 error_log /path/to/error_log level[级别];
错误日志文件及其级别,调试时可以使用debug级别,但要求编译时 --with-debug启用
debug功能!
默认为error级别
编译安装时需要--with-debug能支持debug级别
方式:file /path/logfile;
stderr:发送到标准错误
syslog:server-address[,parameter=values]:发送到
syslog memory:size 内存
级别:
level:debug|info|notice|warn|error|crit|alter|emerg
网络相关配置:
1 keepalive_timeout [time];
设置保持连接的超时时间
默认为75秒
0表示禁用
http|server|location
使用telnet测试:
[root@www19:47:59nginx]#telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
GET / HTTP/1.1
HOST: 172.20.23.48
HTTP/1.1 200 OK
2 keepalive_requests n;在一次长连接上允许承载的最大请求数;
具体使用:
keepalive_timeout 75;
keepalive_requests 2;
3 keepalive_disables [msie6|safari|none]
对指定的浏览器禁止使用长连接
4 tcp_nodelay on|off:
确认延迟,默认是on,
5 client_header_timeout time[秒]
读取http请求首部的超时时长
6 client_body_timeout time;
读取http请求包体的超时时长 ,默认60秒
7 send_timeout time;
发送响应的超时时长
8 client_body_buffer_size size;
用于接收每个客户端请求报文的body部分的缓冲区大小;
默认为16k;超出此大小时其将被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置
9 client_body_temp_path path [level1 [level2 [level3]]];
设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量
目录名为16进制的数字client_body_temp_path /var/tmp/client_body 1 2 2
1 1级目录占1位16进制,即2^4=16个目录 0-f
2 2级目录占2位16进制,即2^8=256个目录 00-ff
2 3级目录占2位16进制,即2^8=256个目录 00-ff
客户端请求的限制:
1 limit_except 方法:限定指定范围之外的方法访问控制[只能用于location]
例子:
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
除了GET以外的方法只允许172.16.0.0/16网络中的用户使用!
用户常用请求方法:
GET -请求获取一个资源
HEAD-根GET相似,但其不需要服务器发送资源而仅传回响应首部
POST -提交表单,支持HTML表单提交
PUT -向服务器写入文档
DELETE -请求删除URL指向的资源
OPTIONS -探测服务器端对某资源所支持的请求方法
具体使用:
server {
server_name www.a.com;
listen 80;
root /web/a.com;
index index.html;
server_tokens off;
location /test {
root /www/html;
limit_except PUT {
deny 172.20.23.33;
deny 172.20.23.23;
allow all;
}
}
location /test1 {
alias /mydata/html;
}
}
这样设置意味着除了PUT以外的方法对172.20.23.33主
机禁止使用
测试:
[root@www21:16:01~]#curl -XGET http://www.a.com/test/
<html>
<head><title>403 Forbidden</title></head>
2 client_max_body_size size;
http请求包体的最大值; 限制用户上传文件的大小
根据请求首部中的Content-Length来检测,以避免无用的传输
3 limit_rate 值 单位是bytes/second;
限制客户端每秒钟传输的字节数
默认为0表示没有限制;
http|server|location
4 limit_rate_after time;
nginx向客户发送响应报文时,如果时长超出了此处指定的时长,则后续的发送过程开始限速
多用于下载服务器!
文件操作优化相关:
1 sendfile on|off
是否启用sendfile功能,高效传输文件模式
sendfile: 设置为on表示启动高效传输文件的模式。
sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。
如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,
用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,
再用write函数把数据从用户空间的buffer写入到内核的buffer,
最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。
2 aio on|off
是否启用aio,一般要启用!启用异步文件
3 open_file_cache max=N [inactive=time] on|off
max=N:缓存条目的最大值
inactive=time:非活动时间,某缓存条目在指定时长时没有被访问过时,将自动删除
默认60秒
是否打开文件缓存功能,当满了以后将根据LRU算法进行置换
缓存的信息包括:
文件的描述符,文件大小,上次修改时间
已经打开的目录结构
没有找到或没有访问权限的信息
4 open_file_cache_errors on|off
是否缓存文件找不到或者没有权限访问等相关信息
可能会影响更新-默认是off
5 open_file_cache_valid time;
多长时间检查一次缓存中的条目是否超出非活动时间的 默认60秒
6 open_file_cache_min_use n;
在inactive指定的时长内被访问超出此处指定的次数时,不会被删除
7 directio size | off;
当文件大于等于给定大小时,例如directio 4m,同步(直接)写磁盘,而非写缓存
对客户端请求的特殊处理:
1 ignore_invalid_headers on|off
是否忽略不合法的http首部,默认值是on,off意味着请求首部中出现不合规的首部将
拒绝响应
2 log_not_found on|off
是否将文件找不到的信息也记录到错误日志中!
3 resolver address;
指定nginx使用的dns服务器地址
4 resolver_timeout time;
指定DNS解析超时时长,默认30s
5 server_tokens [on|off];
是否在错误页面中显示nginx的版本号;一般off
标签:文件 传输 设置 发送 uri day 目的 电脑 介绍
原文地址:http://blog.51cto.com/13878078/2319719