




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Nginx详解,介绍、模块、运维,薛长俊2013.8,目录,目录,基本HTTP特性,处理静态文件,索引文件以及自动索引;打开文件描述符缓存;使用缓存加速反向代理;简单负载均衡以及容错;远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;支持SSL,TLSSNI。,其他HTTP特性,基于名字和IP的虚拟主机;Keep-alive和pipelined连接支持;灵活的配置;重新加载配置以及在线升级时,不需要中断正在处理的请求;自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;3xx-5xx错误代码重定向;重写(rewrite)模块:使用正则表达式改变URI;根据客户端地址执行不同的功能;基于客户端IP地址和HTTP基本认证机制的访问控制;支持验证HTTPreferer;支持PUT、DELETE、MKCOL、COPY以及MOVE方法;支持FLV流和MP4流;速度限制;来自同一地址的同时连接数或请求数限制;嵌入Perl语言。,邮件代理服务器特性,使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端;支持的认证方式:POP3:USER/PASS,APOP,AUTHLOGIN/PLAIN/CRAM-MD5;IMAP:LOGIN,AUTHLOGIN/PLAIN/CRAM-MD5;SMTP:AUTHLOGIN/PLAIN/CRAM-MD5;SSL支持;STARTTLS和STLS支持。,架构和可扩展性,一个主进程和多个工作进程,工作进程以非特权用户运行;支持的事件机制:kqueue(FreeBSD4.1+)、epoll(Linux2.6+)、rtsignals(Linux2.2.19+)、/dev/poll(Solaris711/99+)、eventports(Solaris10)、select以及poll;众多支持的kqueue特性包括EV_CLEAR、EV_DISABLE(临时禁止事件)、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码;支持sendfile(FreeBSD3.1+,Linux2.2+,MacOSX10.5+)、sendfile64(Linux2.4.21+)和sendfilev(Solaris87/01+);文件AIO(FreeBSD4.3+,Linux2.6.22+);DIRECTIO(FreeBSD4.4+,Linux2.4+,Solaris2.6+,MacOSX);支持Accept-filters(FreeBSD4.1+,NetBSD5.0+)和TCP_DEFER_ACCEPT(Linux2.4+);10000个非活跃的HTTPkeep-alive连接仅占用约2.5M内存;尽可能避免数据拷贝操作。,测试过的系统和平台,FreeBSD310/i386;FreeBSD510/amd64;Linux2.23/i386;Linux2.63/amd64;Solaris9/i386,sun4u;Solaris10/i386,amd64,sun4v;AIX7.1/powerpc;HP-UX11.31/ia64;MacOSX/ppc,i386;WindowsXP,WindowsServer2003.,目录,内核模块,配置示例usernobody;worker_processes4;#error_log/opt/nginx_logs/error.log;#error_log/opt/nginx_logs/error.lognotice;#error_log/opt/nginx_logs/error.loginfo;pidlogs/nginx.pid;worker_rlimit_nofile65535;,内核模块,设置工作的进程数(可设置为可用cpu的数量)。语法:worker_processesnumber默认值:1上下文:main指定错误日志的文件和错误级别。语法:error_logfiledebug|info|notice|warn|error|crit默认值:$prefix/logs/error.log上下文:http,server,location定义一个worker进程可以同时处理的文件数量。语法:worker_rlimit_nofilelimit默认值:OS默认上下文:main,事件模块,配置示例。eventsuseepoll;worker_connections65535;指定事件响应模式。语法:usetype默认值:在编译时指定上下文:events设置每个worker进程所能处理的连接数。语法:worker_connectionsnumber默认值:1024上下文:events,HTTP内核模块,配置范例httpincludemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;gzipoff;upstreambackupserver:8010;server:8011;keepalive10;,HTTP内核模块,serverlisten:80;server_;if($http_user_agentMSIE)rewrite(.*)$/msie/$1break;location/configurationA,HTTP内核模块,location/images/if($request_method=POST)proxy_passhttp:/backup;configurationBlocation/purge(/.*)allow;denyall;,HTTP内核模块,为HTTP服务器提供配置上下文。语法:http.默认值:上下文:main开始设置虚拟主机。语法:server.默认值:上下文:http为某个请求URI(路径)建立配置。语法:location=|*|uri.locationname.默认值:上下文:server,location,HTTP内核模块,计算指定的condition的值。语法:if(condition).默认值:上下文:server,location停止处理当前这一轮的rewrite指令集。语法:break;默认值:上下文:server,location,if停止处理并返回指定code给客户端。语法:returncodetext;returncodeURL;returnURL;默认值:上下文:server,location,if,HTTP内核模块,匹配条件变量名;如果变量值为空或者是以“0”开始的字符串,则条件为假;使用“=”和“!=”运算符比较变量和字符串;使用“”(大小写敏感)和“*”(大小写不敏感)运算符匹配变量和正则表达式。正则表达式可以包含匹配组,匹配结果后续可以使用变量$1.$9引用。如果正则表达式中包含字符“”或者“;”,整个表达式应该被包含在单引号或双引号的引用中。使用“-f”和“!-f”运算符检查文件是否存在;使用“-d”和“!-d”运算符检查目录是否存在;使用“-e”和“!-e”运算符检查文件、目录或符号链接是否存在;使用“-x”和“!-x”运算符检查可执行文件;正则正则匹配.xlsx,HTTP内核模块,定义将要被作为默认页的文件。语法:indexfile.;默认值:indexindex.html;上下文:http,server,location为请求设置根目录。语法:rootpath;默认值:roothtml;上下文:http,server,location,ifinlocation定义指定路径的替换路径。语法:aliaspath;默认值:上下文:location,HTTP内核模块,设置虚拟主机名。语法:server_namename.;默认值:server_name;上下文:server设置客户端的长连接在服务器端保持的最长时间。语法:keepalive_timeouttimeoutheader_timeout;默认值:keepalive_timeout75s;上下文:http,server,location为指令错误定义显示的URI。语法:error_pagecode.=responseuri;默认值:上下文:http,server,location,ifinlocation,HTTP内核模块,内嵌变量$arg_name,请求行中的name参数。$args,请求行中参数字符串。$binary_remote_addr,客户端IP地址的二进制形式,长度总是4字节。$body_bytes_sent,nginx返回给客户端的字节数,不含响应头。$bytes_sent,nginx返回给客户端的字节数(1.3.8,1.2.5)。$connection,连接的序列号(1.3.8,1.2.5)。$content_length,“Content-Length”请求头的值。$content_type,“Content-Type”请求头的值。$cookie_name,名为name的cookie。$document_root,当前请求的root指令或alias指令的配置值。$document_uri,与$uri相同。$host,“Host”请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名。,HTTP内核模块,$hostname,机器名称。$http_name,任意请求头的值;变量名的后半部为转化为小写并且用下划线替代横线后的请求头名称。$https,如果连接是SSL模块,返回“on”,否则返回空字符串。$is_args,如果请求行带有参数,返回“?”,否则返回空字符串。$limit_rate,允许设置此值来限制连接的传输速率。$msec,当前时间,单位是秒,精度是毫秒。(1.3.9,1.2.6)$nginx_version,nginx版本号。$pid,worker进程的PID。$query_string,与$args相同。$realpath_root,按root指令或alias指令算出的当前请求的绝对路径。其中的符号链接都会解析成真是文件路径。$remote_addr,客户端IP地址。$remote_port,客户端端口。$remote_user,为基本用户认证提供的用户名。,HTTP内核模块,$request,完整的原始请求行。$request_body,请求正文。在由proxy_pass指令和fastcgi_pass指令处理的路径中,这个变量值可用。$request_body_file,请求正文的临时文件名。处理完成时,临时文件将被删除。如果希望总是将请求正文写入文件,需要开启client_body_in_file_only。如果在被代理的请求或FastCGI请求中传递临时文件名,就应该禁止传递请求正文本身。使用proxy_pass_request_bodyoff指令和fastcgi_pass_request_bodyoff指令分别禁止在代理和FastCGI中传递请求正文。$request_completion,请求完成时返回“OK”,否则返回空字符串。$request_filename,基于root指令或alias指令,以及请求URI,得到的当前请求的文件路径。$request_method,HTTP方法,通常为“GET”或者“POST”。$request_time,请求处理的时间,单位为秒,精度是毫秒(1.3.9,1.2.6);请求处理时间从由客户端接收到第一个字节开始计算。$request_uri,完整的原始请求行(带参数)。,HTTP内核模块,$scheme,请求协议类型,为“http”或“https”。$sent_http_name,任意的响应头字段的值。变量名的后半部为转化为小写并且用下划线替代横线后的响应头名称。$server_addr,接受请求的服务器地址。为计算这个值,通常需要进行一次系统调用。为了避免系统调用,必须指定listen指令的地址,并且使用bind参数。$server_name,接受请求的虚拟主机的首要主机名。$server_port,接受请求的虚拟主机的端口。$server_protocol,请求协议,通常为“HTTP/1.0”或“HTTP/1.1”。$status,响应状态码。$tcpinfo_rtt,$tcpinfo_rttvar,$tcpinfo_snd_cwnd,$tcpinfo_rcv_space,客户端TCP连接的信息,在支持套接字选项TCP_INFO的系统中可用。$uri,当前请求规范化以后的URI。变量$uri的值可能随请求的处理过程而改变。比如,当进行内部跳转时,或者使用默认页文件。,Log模块,配置实例log_formatmain$remote_addr-$remote_user$time_local$request$status$bytes_sent$http_referer$http_user_agent$gzip_ratio;access_log/spool/logs/nginx-access.logmainbuffer=32k;为访问日志设置路径,格式和缓冲区大小。语法:access_logpathformatbuffer=size;access_logoff;默认值:access_loglogs/access.logcombined;上下文:http,server,location,ifinlocation,limit_except指定日志的格式。语法:log_formatnamestring.;默认值:log_formatcombined.;上下文:http,Proxy模块,配置范例proxy_temp_path/date/nginx/proxy_temp12;proxy_cache_path/data/nginx/cachelevels=1:2keys_zone=ng_cache:400minactive=1dmax_size=60g;location/proxy_set_headerHost$host;proxy_set_headerConnection“”;proxy_http_version1.1;proxy_cache_valid3025m;proxy_cache_valid20020d;proxy_cache_key$scheme$host$request_uri;proxy_cacheng_cache;proxy_passhttp:/localhost:8000;,重新定义或者添加发往后端服务器的请求头。语法:proxy_set_headerfieldvalue;默认值:proxy_set_headerHost$proxy_host;proxy_set_headerConnectionclose;上下文:http,server,location设置代理使用的HTTP协议版本。语法:proxy_http_version1.0|1.1;默认值:proxy_http_version1.0;上下文:http,server,location设置后端服务器的协议和地址。语法:proxy_passURL;默认值:上下文:location,ifinlocation,limit_except,Proxy模块,设置缓存的路径和其他参数。语法:proxy_cache_pathpathlevels=levelskeys_zone=name:sizeinactive=timemax_size=sizeloader_files=numberloader_sleep=timeloader_threshold=time;默认值:上下文:http指定用于页面缓存的共享内存。语法:proxy_cachezone|off;默认值:proxy_cacheoff;上下文:http,server,location,Proxy模块,为不同的响应状态码设置不同的缓存时间。语法:proxy_cache_validcode.time;默认值:上下文:http,server,location定义如何生成缓存的键。语法:proxy_cache_keystring;默认值:proxy_cache_key$scheme$proxy_host$request_uri;上下文:http,server,location设置响应被缓存的最小请求次数。语法:proxy_cache_min_usesnumber;默认值:proxy_cache_min_uses1;上下文:http,server,location,Proxy模块,Rewrite模块,配置范例/多目录转成参数if($host*(.*)/.domain/.com)set$sub_name$1;rewrite/sort/(/d+)/?$/index.php?act=sort,Rewrite模块,如果指定的正则表达式能匹配URI,此URI将被replacement参数定义的字符串改写。rewrite指令按其在配置文件中出现的顺序执行。语法:rewriteregexreplacementflag;默认值:上下文:server,location,if可选的flag参数可以是其中之一:last:停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;break:停止执行当前这一轮的ngx_http_rewrite_module指令集;redirect:在replacement字符串未以“http:/”或“https:/”开头时,使用返回状态码为302的临时重定向;permanent:返回状态码为301的永久重定向。,Map模块,配置范例map$uri$newdefault/aa/bb/cc/(?P.*)$/john/aa/mapped_aa;/aa/(?.*)$/mapped_bb/$suffix;,Map模块,变量设置的映射表。映射表由两列组成,匹配模式和对应的值。语法:mapstring$variable.默认值:上下文:http这个指令也支持三个特殊参数。defaultvalue:如果源变量值没有匹配到任何变量,则设置一个默认值作为结果。当没有设置default,将会用一个空的字符串作为默认的结果。hostnames:允许用前缀或者后缀掩码指定域名作为源变量值。includefile:包含一个或者多个存有映射值的文件。,Upstream模块,配置范例upstreambackendweight=5;server:8080max_fails=3fail_timeout=30s;serverunix:/tmp/backend3;:8080backup;keepalive16;定义一组服务器语法:upstreamname.默认值:上下文:http,Upstream模块,定义服务器的地址address和其他参数parameters。语法:serveraddressparameters;默认值:上下文:upstream可定义参数:weight=number。设定服务器的权重,默认是1。max_fails=number。设定Nginx与服务器通信的尝试失败的次数。fail_timeout=time。设定统计失败尝试次数的时间段,默认是10秒。backup。标记为备用服务器。down。标记服务器永久不可用,可以跟ip_hash指令一起使用。激活对上游服务器的连接进行缓存。语法:keepaliveconnections;默认值:上下文:upstream,Access模块,配置范例location/deny;allow/24;allow/16;allow2001:0db8:/32;denyall;,Access模块,允许指定的网络地址访问语法:allowaddress|CIDR|all;默认值:上下文:http,server,location,limit_except拒绝指定的网络地址访问语法:denyaddress|CIDR|all;默认值:上下文:http,server,location,limit_except,FastCGI模块,配置范例upstream_fcgiserver:9000weight=8;server:9001weight=8;location.*.php?$#fastcgi_passunix:/dev/shm/fcgi.sock;#fastcgi_pass:9000;fastcgi_pass_fcgi;includefastcgi.conf;fastcgi_buffer_size128k;fastcgi_buffers4128k;fastcgi_connect_timeout1800;,FastCGI模块,指定FastCGI服务器监听端口与地址。语法:fastcgi_passfastcgi-server默认值:none上下文:http,server,location指定一些传递到FastCGI服务器的参数。语法:fastcgi_paramparametervalue默认值:上下文:http,server,locationfastcgi.conf指定同FastCGI服务器的连接超时时间,这个值不能超过75秒。语法:fastcgi_connect_timeouttime默认值:fastcgi_connect_timeout60上下文:http,server,location,目录,Php-fpm配置,配置范例。www;listen=/dev/shm/fcgi.socklisten=9000user=nobodygroup=nobodypm=dynamicpm.max_children=512pm.start_servers=32pm.min_spare_servers=8pm.max_spare_servers=64pm.max_requests=4096php-fpm.conf.in,系统优化-nginx,worker数目设置worker_processes可用cpu核数;使用epolluseepoll;关闭访问日志access_logoff;其它配置优化worker_connections65535;/每个进程允许的最多连接数worker_rlimit_nofile65535;/打开最多的文件描述符keepalive_timeout75s;/keepalive超时时间client_header_buffer_size4k;/客户端请求头部的缓冲区大小,系统优化-内核参数,优化资源限制#ulimit-n1024#ulimitu1024修改openfiles和maxuserprocesses:1,在/etc/rc.local中增加一行ulimit-SHn655352,在/etc/profile中增加一行ulimit-SHn655353,在/etc/security/limits.conf最后增加:*softnofile65535*hardnofile65535*softnproc65535*hardnproc65535,系统优化-内核参数,优化内核参数net.ipv4.tcp_max_tw_buckets=6000/timewait数量,默认180000。net.ipv4.ip_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体校解剖课讲解
- 云南省元江一中2026届高三上化学期中复习检测模拟试题含解析
- 卫生习惯宣讲
- 如何打扫学校卫生
- 学前班学期末汇报展示
- 三顾茅庐课堂讲解
- 前端技术团队规划
- 胚胎学输卵管讲解
- 汽车电控技术发展
- 认养一头牛供应链体系解析
- 教师课堂管理方法和技巧课件
- 伍德灯在寻找炎症性皮肤病变中的应用价值研究
- 预防老年人保健品骗局
- 安全生产培训(完整版)课件
- 钢结构长廊施工方案
- 信保业务自查问题统计表
- 年产3万吨环保型铝箔容器系列产品生产线项目环境影响报告
- 安庆汇辰药业有限公司高端原料药、医药中间体建设项目环境影响报告书
- 关于术中知晓预防和脑功能监测专家共识
- 河道修防工高级工试题
- GB/T 4458.3-2013机械制图轴测图
评论
0/150
提交评论