标签:nginx配置详解
nginx的核心配置:正常运行的必备配置:
1、user username [groupname];
指定运行worker进程的用户和组
2、pid /path/to/pidfile_name;
指定nginx的pid文件路径
3、 worker_rlimit_nofile #;
指定一个worker进程所能够打开的最大文件句柄数
4、worker_rlimit_sigpending #;
设定每个用户能够发往worker进程的信号的数量
优化性能相关的配置:
1、worker_processes #;
worker进程的个数,进城数量直接影响性能,通常其数值为CPU物理核心数减1,如8核CPU,则为7
2、worker_cpu_affinity cpu_mask ...;
将nginx进程绑定在哪一颗cpu上,例如,worker_process 为6,则cpu掩码这样配置
worker_processes 6;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000;
3、ssl_engine device;
在存在ssl硬件加速器的服务器上,指定所使用的ssl硬件设备
4、timer_resolution #;
默认情况下,每一次内核事件的调用在返回时,都会执行一次gettimeofday() 来更新nginx缓存时钟,早期linux内核中
执行gettimeofday() 代价很大,非常消耗性能,所以如果频繁执行,对性能影响很大。这个参数表示每隔多长时间才会由gettimeofday()来更新一次缓存时钟
现在的x86-64系统上,gettimeofday()代价比较小
5、work_priority nice;
nice值的范围是-20,19,值越小优先级越高
事件相关的配置:
1、accept_mutex on | off;
是否打开nginx的负载均衡锁(默认是打开的)。nginx可能会运行多个worker进程,用户的请求是由master进程调度给worker进程的,开启这个负载均衡锁,则可以将用户请求均衡的调度到各个worker进程上,通常一个worker进程的负载打到其上限的7/8,master就尽可能不再将请求调度至此worker。但这个调度是有性能代价的。
2、lock_file /path/to/lock_file;
lock文件,如果上面accept_mutex 设置为off,则该配置无效
3、accept_mutex_delay #ns;
accept锁模式中,一个worker进程为取得accept锁的等待时长; 如果某worker进程在某次试图取得锁时失败了,至少要等待#ms才能再一次请求锁,默认是500ms
4、multi_accept {on | off};
是否允许一次性地响应多个用户请求,默认为off
5、use [epoll | rtsig | select | poll];
定义使用的事件模型,建议让nginx自动选择
6、worker_connections #;
每个worker能否并发响应的最大请求数;
用于调试nginx、定位问题: 只在调试nginx时使用
1、daemon [on | off];
是否让nginx运行于后台,默认为on,调试时可以设置为off,使得所有信息输出至控制台
2、master_process [on | off]
是否以master/worker模式运行nginx,默认为on,调试时可以设置为off,把master进程关闭,只启动一个worker方便追踪问题
3、error_log /path/to/error_log level;
错误日志文件及其级别,调试时可以使用debug级别,默认为error级别。但要求在编译时必须使用--with-debug 启动debug功能;
nginx的http功能:
必须使用虚拟主机来配置站点: 每一个虚拟主机使用一个server{}配置
server {
}
非虚拟主机的配置或公共配置,需要定义在server之外,http之内
http {
directive value;
...
server {
listen : 监听的地址和端口;
server_name:
}
server {
}
}
1、server {}
定义一个虚拟主机,nginx仅支持使用基于主机名或ip的虚拟主机:
2、listen
listen address [:port];
listen port;
listen unix:socker_file_path; 只能本机访问,基本不会用到
default_server: 定义此server为http中默认的server,如果所有的server中没有任何一个listen使用此参数,则第一个server为默认server
rcvbuf= SIZE: 接收缓冲大小
sndbuf= SIZE:发送缓冲大小
ssl:https server:
3、server_name name;
server_name可以跟多个主机名,名称中可以使用通配符和正则表达式(通常以~开头)
当nginx收到用户请求时,会取出其首部的server的值,而后跟众server_name进行比较,比较方式:
(1)先做精确匹配: www.magedu.com
(2)左侧通配符匹配:*.magedu.com
(3)右侧通配符匹配:www.*
(4)正则表达式匹配: ~^.*\.magedu\.com$
4、server_name_hash_bucket_size 32|64|128
为了实现快速主机查找,nginx使用hash来保存主机名;
5、location 【= | ~ | ~* |^~】uri {...}
功能:允许根据用户请求的URI来匹配指定的各location以进行访问配置,匹配到时,将被location块中的配置所处理,比如:
http://www.magedu.com/images/logo.gif
=: 精确匹配
~: 正则表达式模式匹配,匹配时区分字符大小写
~*:正则比到达时模式匹配,匹配时忽略字符大小写
^~:URI前半部分匹配,不检查正则表达式
文件路径相关定义:
1、root path;
设置web资源路径:用于指定请求的根文档目录;可以配置在http、server或者location中,
location / {
root /www/htdocts;
}
location ^~ /images/ {
root /web;
}
http://www.magedu.com/images/b.html 访问的是/web/images下的b.html
root作用是访问任何资源都是/web/ + URI 路径下的
2、alias path
用于配置路径别名,通常只用在location中
location / {
root /www/htdocts;
}
location ^~ /images/ {
alias /web;
}
alias作用是将 /web 映射为/images,URI中的image被web替换了
3、index file ...;
定义默认页面,可跟多个值
4、error_page code ... [=[response]] uri;
当对于某个请求返回错误时,如果匹配上error_page指令中设定的code,则重定向到指定页面
5、try_files path1 [path2...] uri;
当访问的文件不存在时,让用户访问指定的路径上的文件,改文件一定要存在,例如:
location /documents/ {
root /www/htdocs; ###root一定要配置
try_files $uri /temp.html;
}
当用户访问http://wwww.magedu.com/document/test.html时,如果/www/htdocs/documents 路径下有test.html文件则能正常访问,如果文件不存在,则让用户访问/documents/temp.html文件
网络连接相关的设置:
1、keepalive_timeout time;
保持连接的超时时长,默认为75s
2、keepalive_requests n;
在一次长连接上允许承载的最大请求数
3、keepalive_disable [msie6 | safari | none]
对指定的浏览器禁止使用长连接
4、tcp_nodelay on | off
对keepalive连接是否使用TCP_NODELAY选项,默认为on
5、client_header_timeout time;
读取http请求首部的超时时长, 服务器接收用户请求后,如果用户在一段时间内迟迟不发送数据,则认为超时. 默认都是60s
6、client_body_timeout time;
读取http请求包体的超时时长,默认60s
7、send_timeout time;
发送响应的超时时长,服务器将用户请求的数据发给客户端,在规定时间内得不到确认则认为超时,
对客户端请求的限制:
1、limit_except mothed
只允许用户通过制定的方法来访问web服务,如GET,POST等
2、client_max_body_size SIZE;
http情报包体的最大值,常用于限定客户端所能够请求的最大包体,根据请求首部中的Content-Length来检测,以避免无用的传输:
3、limit_rate speed;
限制客户端每秒传输的字节数,默认为0,表示不限制
4、
标签:nginx配置详解
原文地址:http://blog.51cto.com/zengestudy/2115357