Nginx的全部配置文件都在 /etc/nginx 目录下面nginx.conf
html
主要有main配置段 ,也叫核心配置段,主配置段
node
还有http和mail
nginx
配置指令以分号结尾(;)并且语法区分大小写web
eg: directive value1 [value2 ...];正则表达式
并且还支持使用变量浏览器
模块内置变量 :变量自动赋值 缓存
自定义变量:set var_name value
服务器
主配置段的指令的类别:
网络
用于调试,定位问题(生产中不用开启)
并发
正常运行,必备的配置
优化性能的配置
事件相关的配置(一个事件响应多个请求,master指向root,worker 指向的Nginx。)
正常运行的必备配置:
一、user USERNAME [GROUPNAME];
指定运行worker进程的用户 和组,例如:
user nginx nginx;s
二、pid /path/to/pid_file;
指定nginx的pid文件;
三、worker_rlimit_nofile #;
指定一个worker进程所可以打开的最大文件句柄数;
四、worker_rlimit_sigpending #;
指定每一个用户可以发往worker的信号的数量;
优化性能相关的配置:
一、worker_processes #:
worker线程的个数;一般应该为物理CPU核心个数减1;
启动的work线程的个数。
二、worker_cpu_affinity cpumask ...;
绑定worker进程至指定的CPU上;
CPUMASK
0001
0010
0100
1000
例如:
worker_cpu_affinity 00000001 00000010 00000100;
三、timer_resolution t;
gettimeofday();
四、worker_priority nice;
-20, 19
事件相关的配置:
一、accept_mutex [on|off]
内部调用用户 请求至各worker时用的负载均衡锁;打开时表示能让多个worker轮流 地、序列化地与响应新请求;
二、lock_file /path/to/lock_file;
三、accept_mutex_delay #ms;
四、use [epoll|rgsig|select|poll];
定义使用的事件模型;建议让Nginx自动选择;
五、worker_connections #;
每一个worker进程所可以响应的最大并发请求数;
用于调试、定位问题:
一、daemon [off|on]
是否以守护进程方式启动nginx;
二、master_process on|off;
是否以master/worker模型来运行nginx;
三、error_log /path/to/error_log level;
错误日志文件及其级别;出于调试的目的,能够使用debug级别,但此级别只有在编译 nginx时使用了--with-debug选项才有效;
Nginx
main配置段 http { } http配置:http core 配置一个静态web服务器 ngx_http_core_module 配置框架: http { upstream { ... } server { listen IP:PORT; # 虚拟主机 location /URL { if ...{ ... } root "/path/to/somewhere"; ... } } server { ,,. } } 注意:与http配置相关的指令必须放在http、server、location、upstream、if块中; 虚拟主机相关的配置: 一、server {} 定义一个虚拟主机; 二、listen 监听的端口 完整格式 :listen address[:port] [default_server] [ssl] [spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]; listen address[:port] [default_server] ssl backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置; rcvbuf=size:设定监听句柄的SO_RCVBUF参数; 例如: listen 172.16.100.8:8080 三、server_name name [...]; 后可跟多个主机名;名称还能够使用通配符和正则表达式(~); (1) 先作精确匹配;www.magedu.com: (2) 左侧通配符匹配,例如:*.magedu.com; (3) 右侧通配符匹配,例如:www.*; (4) 正则表达式匹配,例如: ~^.*\.magedu\.com$ (5) default_server 四、location [=|~|~*|^~] /uri {...} location @name 功能:容许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应 的location块中的配置所处理; =: 精确匹配检查; ~: 正则表达式模式匹配,区分字符大小写; ~*:正则表达式模式 匹配,不区分字符大小写; ^~:URI的前半部分匹配,不检查正则表达式; 匹配优先级:精确匹配(=)、^~、~和~*、由不带符号的URL进行左侧匹配; 五、root 设置web资源路径映射;用于指明请求的URL所对应的文档的根目录路径; location /p_w_picpaths/ { root "/web/imgs/"; } 六、alias path 用于location配置段,定义路径别名 location /p_w_picpaths/ { alias /www/pictures/; } 注意:root表示指明路径为对应location的“ /” URL;alias表示路径映射,即 location中的URL是相对于alias所指明的路径而言; 七、index file 默认主页面 index index.html; 八、error_page code [...] [=code] URI | @name 根据http状态码重定向错误页面 error_page 404 /404.html =[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码; 九、try_files try_files path1[,path2,...] URI 网络链接相关的配置: 一、keepalive_timeout time; 保持链接的超时时长,默认为75s; 二、keepalive_requests #; 在一次保持链接上容许承载最大资源请求数; 三、keepalive_disable [msie6|safari|none] 为指定类型的浏览器禁用长链接; 四、tcp_nodelay on|off 对长链接是否使用TCP_NODELAY选项; 五、client_header_timeout time; 读取http请求报文首部的超时时长; 六、client_body_timeout time; 读取http请求报文body部分的超时时长; 七、send_timeout time; 发送响应报文的超时时长; 对客户端请求进行限制: 一、limit_except METHOD {...} 指定对范围以外的其它方法的访问控制; limit_except GET { allow 172.16.0.0/16; deny all; } 二、client_body_max_size SIZE; 限制请求报文中body部分的上限;经过检测请求报文首部中的"Content_Length"来判 定; 三、limit_rate speed; 限制客户端每秒种传输的字节数,默认为0,表示无限制; 对内存或磁盘资源进行分配 一、client_body_in_file_only on|clean|off; 请求报文的body部分是否可暂存于磁盘;on表示容许,而且即便请求结束,也不会删 除暂存的内容;clean表示会删除;off不容许暂存; 二、client_body_in_single_buffer on|off 三、client_body_buffer_size size; 四、client_body_temp_path DIR [level1 [level2 [level3 [level4]]]] 例如:client_body_temp_path /var/tmp/nginx/client 1 2 五、client_header_buffer_size size: MIME类型相关的配置: 一、types {} 定义MIME types至文件的扩展名; types { text/html .html; p_w_picpath/jpeg .jpg; } 二、default_type MIME-TYPE; 文件操做优化相关的配置: 一、sendfile on|off; 二、aio on|off; 三、directio size|off; 是否使用O_DIRECT选项去请求读取文件;与sendfile功能互斥; 四、open_file_cache max=N[inactive=time] | off; nginx能够缓存如下三种信息: (1) 文件句柄、文件大小和最近一次修改时间; (2) 打开目录的目录结构; (3) 没有找到的或者没有权限操做的文件的相关信息; max=N表示可缓存的最大条目上限;一旦到达上限,则会使用LRU从缓存中删除最近最 少使用的条目; inactive=time: 在inactive指定的时长内没有被访问过的缓存条目就会淘汰; 五、open_file_cache_errors on|off; 是否缓存在文件缓存中缓存打开文件时出现找不到路径,没有权限等的错误信息; 六、open_file_cache_min_uses time; 每隔多久检查一次缓存中缓存条目的有效性;默认60s; 重点关注:server{}, location{}, listen, server_name, root, alias, keepalive_timeout, keepalive_requests, error_page 基于IP的访问控制: http, server, location allow, deny 基于用户的basic认证配置: auth_basic auth_basic_user_file htpasswd命令建立用户帐号文件; 基于gzip实现响应报文压缩: 定制响应首部 add_header name value [always]; expires 定制访问日志 log_format access_log 定制出与httpd的combined格式相同的日志内容; 定义合法引用: valid_referers none | blocked | server_names | string ...; if ($invalid_referer) { return 403 } URL rewrite: URL地址重写 rewrite regex replacement [flag]; last break redirect permanent if (condition) { ... }