nginx详解.pptx

上传人:s****8 文档编号:67323153 上传时间:2022-12-24 格式:PPTX 页数:45 大小:1.46MB
返回 下载 相关 举报
nginx详解.pptx_第1页
第1页 / 共45页
nginx详解.pptx_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《nginx详解.pptx》由会员分享,可在线阅读,更多相关《nginx详解.pptx(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Nginx详解介绍、模块、运维薛长俊 2013.8目 录目 录基本HTTP特性处理静态文件,索引文件以及自动索引;打开文件描述符缓存;使用缓存加速反向代理;简单负载均衡以及容错;远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;支持SSL,TLSSNI。其他HTTP特性基于名字和IP的虚拟主机;Keep-alive和pipelined连接支持;灵活的配置;重新加载

2、配置以及在线升级时,不需要中断正在处理的请求;自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;3xx-5xx错误代码重定向;重写(rewrite)模块:使用正则表达式改变URI;根据客户端地址执行不同的功能;基于客户端IP地址和HTTP基本认证机制的访问控制;支持验证HTTPreferer;支持PUT、DELETE、MKCOL、COPY以及MOVE方法;支持FLV流和MP4流;速度限制;来自同一地址的同时连接数或请求数限制;嵌入Perl语言。邮件代理服务器特性使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端;

3、支持的认证方式: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以及p

4、oll;众多支持的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+)和TC

5、P_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_p

6、rocesses4;#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|cri

7、t默认值:$prefix/logs/error.log上下文:http,server,location定义一个worker进程可以同时处理的文件数量。语法:worker_rlimit_nofilelimit默认值:OS默认上下文:main事件模块配置示例。eventsuseepoll;worker_connections65535;指定事件响应模式。语法:usetype默认值:在编译时指定上下文:events设置每个worker进程所能处理的连接数。语法:worker_connectionsnumber默认值:1024上下文:eventsHTTP内核模块配置范例httpincludemime.

8、types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;gzipoff;upstreambackupserver127.0.0.1:8010;server127.0.0.1:8011;keepalive10;HTTP内核模块serverlisten192.168.1.1:80;server_;if($http_user_agentMSIE)rewrite(.*)$/msie/$1break;location/configurationAHTTP内核模块location/images/if($reques

9、t_method=POST)proxy_passhttp:/backup;configurationBlocation/purge(/.*)allow127.0.0.1;denyall;HTTP内核模块为HTTP服务器提供配置上下文。语法:http.默认值:上下文:main开始设置虚拟主机。语法:server.默认值:上下文:http为某个请求URI(路径)建立配置。语法:location=|*|uri.locationname.默认值:上下文:server,locationHTTP内核模块计算指定的condition的值。语法:if(condition).默认值:上下文:server,loc

10、ation停止处理当前这一轮的rewrite指令集。语法:break;默认值:上下文:server,location,if停止处理并返回指定code给客户端。语法:returncodetext;returncodeURL;returnURL;默认值:上下文:server,location,ifHTTP内核模块匹配条件变量名;如果变量值为空或者是以“0”开始的字符串,则条件为假;使用“=”和“!=”运算符比较变量和字符串;使用“”(大小写敏感)和“*”(大小写不敏感)运算符匹配变量和正则表达式。正则表达式可以包含匹配组,匹配结果后续可以使用变量$1.$9引用。如果正则表达式中包含字符“”或者“;

11、”,整个表达式应该被包含在单引号或双引号的引用中。使用“-f”和“!-f”运算符检查文件是否存在;使用“-d”和“!-d”运算符检查目录是否存在;使用“-e”和“!-e”运算符检查文件、目录或符号链接是否存在;使用“-x”和“!-x”运算符检查可执行文件;正则正则匹配.xlsxHTTP内核模块定义将要被作为默认页的文件。语法:indexfile.;默认值:indexindex.html;上下文:http,server,location为请求设置根目录。语法:rootpath;默认值:roothtml;上下文:http,server,location,ifinlocation定义指定路径的替换路

12、径。语法:aliaspath;默认值:上下文:locationHTTP内核模块设置虚拟主机名。语法:server_namename.;默认值:server_name;上下文:server设置客户端的长连接在服务器端保持的最长时间。语法:keepalive_timeouttimeoutheader_timeout;默认值:keepalive_timeout75s;上下文:http,server,location为指令错误定义显示的URI。语法:error_pagecode.=responseuri;默认值:上下文:http,server,location,ifinlocationHTTP内核模块

13、内嵌变量$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。$docu

14、ment_root,当前请求的root指令或alias指令的配置值。$document_uri,与$uri相同。$host,“Host”请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名。HTTP内核模块$hostname,机器名称。$http_name,任意请求头的值;变量名的后半部为转化为小写并且用下划线替代横线后的请求头名称。$https,如果连接是SSL模块,返回“on”,否则返回空字符串。$is_args,如果请求行带有参数,返回“?”,否则返回空字符串。$limit_rate,允许设置此值来限制连接的传输速率。$msec,当前时间,单位是秒,精度是毫秒。(1.3.9

15、,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_b

16、ody_file,请求正文的临时文件名。处理完成时,临时文件将被删除。如果希望总是将请求正文写入文件,需要开启client_body_in_file_only。如果在被代理的请求或FastCGI请求中传递临时文件名,就应该禁止传递请求正文本身。使用proxy_pass_request_bodyoff指令和fastcgi_pass_request_bodyoff指令分别禁止在代理和FastCGI中传递请求正文。$request_completion,请求完成时返回“OK”,否则返回空字符串。$request_filename,基于root指令或alias指令,以及请求URI,得到的当前请求的文件

17、路径。$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

18、指令的地址,并且使用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

19、模块配置实例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,lo

20、cation,ifinlocation,limit_except指定日志的格式。语法:log_formatnamestring.;默认值:log_formatcombined.;上下文:httpProxy模块配置范例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“

21、”;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,loca

22、tion设置代理使用的HTTP协议版本。语法:proxy_http_version1.0|1.1;默认值:proxy_http_version1.0;上下文:http,server,location设置后端服务器的协议和地址。语法:proxy_passURL;默认值:上下文:location,ifinlocation,limit_exceptProxy模块设置缓存的路径和其他参数。语法:proxy_cache_pathpathlevels=levelskeys_zone=name:sizeinactive=timemax_size=sizeloader_files=numberloader_s

23、leep=timeloader_threshold=time;默认值:上下文:http指定用于页面缓存的共享内存。语法:proxy_cachezone|off;默认值:proxy_cacheoff;上下文:http,server,locationProxy模块为不同的响应状态码设置不同的缓存时间。语法:proxy_cache_validcode.time;默认值:上下文:http,server,location定义如何生成缓存的键。语法:proxy_cache_keystring;默认值:proxy_cache_key$scheme$proxy_host$request_uri;上下文:htt

24、p,server,location设置响应被缓存的最小请求次数。语法:proxy_cache_min_usesnumber;默认值:proxy_cache_min_uses1;上下文:http,server,locationProxy模块Rewrite模块配置范例/多目录转成参数if($host*(.*)/.domain/.com)set$sub_name$1;rewrite/sort/(/d+)/?$/index.php?act=sort&cid=$sub_name&id=$1last;/目录对换rewrite/(/d+)/(.+)/$2?id=$1last;/在用户使用ie的使用重定向到/

25、nginx-ie目录下。if($http_user_agentMSIE)rewrite(.*)$/nginx-ie/$1break;Rewrite模块如果指定的正则表达式能匹配URI,此URI将被replacement参数定义的字符串改写。rewrite指令按其在配置文件中出现的顺序执行。语法:rewriteregexreplacementflag;默认值:上下文:server,location,if可选的flag参数可以是其中之一:last:停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;break:停止执行当前这一轮的

26、ngx_http_rewrite_module指令集;redirect:在replacement字符串未以“http:/”或“https:/”开头时,使用返回状态码为302的临时重定向;permanent:返回状态码为301的永久重定向。Map模块配置范例map$uri$newdefaulthttp:/ 录Php-fpm配置配置范例。www;listen=/dev/shm/fcgi.socklisten=9000user=nobodygroup=nobodypm=dynamicpm.max_children=512pm.start_servers=32pm.min_spare_servers=

27、8pm.max_spare_servers=64pm.max_requests=4096php-fpm.conf.in系统优化-nginxworker数目设置worker_processes可用cpu核数;使用epolluseepoll;关闭访问日志access_logoff;其它配置优化worker_connections65535;/每个进程允许的最多连接数worker_rlimit_nofile65535;/打开最多的文件描述符keepalive_timeout75s;/keepalive超时时间client_header_buffer_size4k;/客户端请求头部的缓冲区大小系统优化

28、-内核参数优化资源限制#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。n

29、et.ipv4.ip_local_port_range=102465000/允许系统打开的端口范围。net.ipv4.tcp_tw_recycle=1/启用timewait快速回收。net.ipv4.tcp_tw_reuse=1/允许TIME-WAITsockets重用于新TCP连接。net.ipv4.tcp_syncookies=1/出现SYN等待队列溢出时启用cookies处理。net.core.somaxconn=262144/web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BAC

30、KLOG默认为511,所以有必要调整这个值。dev_max_backlog=262144/每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。net.ipv4.tcp_max_orphans=262144/系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。系统优化-内核参数net.ipv4.tcp_max_syn_backlog=262144/记录的那些尚未收到客户端确认信息

31、的连接请求的最大值。net.ipv4.tcp_timestamps=0/时间戳可以避免序列号的卷绕。net.ipv4.tcp_synack_retries=1/为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。net.ipv4.tcp_syn_retries=1/在内核放弃建立连接之前发送SYN包的数量。net.ipv4.tcp_fin_timeout=1/如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2内核的通常值是180秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN-WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。net.ipv4.tcp_keepalive_time=30/当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com