分析系统类尚观rhce nginx_第1页
分析系统类尚观rhce nginx_第2页
分析系统类尚观rhce nginx_第3页
分析系统类尚观rhce nginx_第4页
分析系统类尚观rhce nginx_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、轻量级 WEB 服务器 NginxByMark & Kevinkkis:本文遵循“署名-非商业性使用-相同方式共享 2.5陆”协议您可以、展览、表演、放映、广播或通过信息网络本作品您可以根据本作品演义自己的作品您必须按照作者或者人指定的方式对作品进行署名。您不得将本作品用于商业目的。如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。对任何再使用或者,您都必须向他人清楚地展示本作品使用的协议条款。如果得到著作权人的,您可以不受任何这些条件的限制。Mark Zhu(k)Kevin Zou(kis)Rxyz1 1 | Nginx 2 1.1

2、WEB 2 1.2 WEB 2 1.2.1 Apache 2 1.2.2 Lighttpd 3 1.2.3 Tomcat 3 1.2.4 IBM WebSphere3 1.2.5 Windows IIS4 1.2.6 Nginx A4 1.3 Y Nginx5 1.4 Nginx6 2 | Nginx A7 2.1 Nginx A7 2.2 2.2 Nginx A(a“”8 3 | Nginx AZ15 3.1 Nginx 15 3.2 Nginx A21 3.3 A https23 3.4 Nginx 24 3.5 26 4 | Rewrite 28 4.1 Rewrite28 4.2 Re

3、write I28 5 | LNMP33 5.1 rpm 33 5.2 Nginx34 5.3 5.4 34 36 5.5 5.6 +u39+41 5.7 Nginx a 43I第 5.8 节 启动 Nginx 服务47IIyzp Linux 45spAYPAys5AMSAM|AyA WEB Nginx NginxKAMA Linux ;ZAF, pt Linux ;AA, N5MP_(J(_A WEB M L Nginx A!#M1 1 | Nginx 1Nginx 1.1WEB WEB $%Y WWW(WORLD WIDE WEB)_&8(67),MWeb *+,Y-H8(./(),67A

4、M,2(3A4455A6789#:(;?A67:BM-CpDEFG=GHI Web 8()bJ7P;Y:BA8SK4(LJMANO(P:#QRSAM9BCPH/ WEB (#tAH_)bMSTnu#c IP ldeA ISP Ps IP ldpA LINUX (M LINUX (gh WEB M9#PHi/s$A WEB (45j$AHhk)bM1.2 WEB Unix LinuxA Web Apache( Nginx( Lighttpd(Tomcat( IBM WebSphere ?MDRy1mA Web ApacheMWindowsAno=A IIS(ernet Information S

5、erver)M Apache p% Illinois Urbana-Chaign Aqrstu)M Apache vu/wxA,yNzA)+|M1996 4 #Apache ernet (*A HTTP 1999 5 57% A8H(*p2005 7 s(p 69%MApache Ry!(AA Web Qu/(u/Au)(A(#*A Unix(Linux(Windows A_M()MApache A#Q&2 1 | Nginx Apache A: Lighttpd ”HAuD=ARA&K_8“(Y(A Webserver MAiuTcpu_#A?LMLighttpd OpenSource A

6、Webserver YAM FastCGI, CGI, Auth, (outpompress), URL, Alias ?_ Apache #*-$ Y_Lighttpd (-_gAsKQ Apache A4A Yp Lighttpd 9BC8KstMLighttpd A: Tomcat AuA Serlvet ApacheA Jakarta RAR% Apache(Sun Dt=Hu),M%Q Sun AaA Servlet Jsp _ Tomcat OpxMTomcat Jsp Servlet A*M Tomcat N Servlet $:A Web A_ Html H8a Apache

7、A Html A_9NSApache#P Tomcat Apache ,pe Apache HtmlTomcat Jsp ServletMsB,U Apache Tomcat AuMTomcat A: WebSphere Application Server B_(u/A Web sIBM qAMZQ Java Servlets A Web s*Y Web “&A * # + Apache(Netsc( IIS3第 1 章 Nginx 简介和IBM 的HTTPWeb 服务器,因此可以成为强大的 Web 应用服务器。WebSphere 的: 第1.2.5节Windows IISIIS 是erne

8、t Information Server 的缩写,它是微软公司主推的服务器。IIS 与Window NT Server 完全集成在一起,因而用户能够利用 Windows NT Server 和NTT File System,NT 的文件系统)内置的安全特性,建立强大,灵活而安全的ernet 和ranet 站点。 IIS 支持 HTTP(Hypertext Transfrotocol,超文本传输协议),FTP(File Transfrotocol,文件传输协议)以及 SMTP 协议,通过使用 CGI 和ISAPI,IIS 可以得到高度的扩展。IIS 的:第1.2.6节Nginx 的历史Nginx

9、 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engineX”, 是一个高性能的 HTTP 和反向服务器,同时也是一个 IMAP/POP3/SMTP服务器。Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev 在建立的项目时,使用基于 BSD。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。在俄罗斯许多大都已经使用它, 且一直表现不凡。截至 2007 年 4 月,俄罗斯大约有 20%左右的虚拟主机是由

10、nignx 服务或的。安全博客中统计 Nginx 服务或了大约所有ernet 虚拟主机的 4%。而 Netcraft 的统计显示,Nginx 服务的主机在过去的一年里以四倍的速度增长并且在这几年里,它的Netcraft 截止至 2010 年 5 月的统计。还在不断上升,下图为4第 1 章 Nginx 简介第1.3节为什么要用 NginxNginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll 模型,能经受高负载的考验,有表明能支持高达 50,000 个并发连接数。Nginx 具有很高的稳定性,其它 HTTP 服务器当遇到的峰值,或者有人发起慢速连接时,也很

11、可能会导致服务器物理内存耗尽频繁交换,失去响应只能重启服务器。例如当前 Apache 一旦上到 200 个以上进程,web 响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。Nginx10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的表示保持对Nginx 来说5 1 | Nginx Z(AM9Jznginx lighttpd MNginx AL, #p 7*24 N_z*$NAM_N_zAKL*L*MNginx master-slave _I SMP A_;L I/O AMNginx -0, +$-MNgin

12、x t os &ALSK sendfile (Linux2.2+)accept-filter(FreeBSD4.1+)TCP_DEFER_ACCEPT (Linux 2.4+)A&_Mnginx -itSNginx HRy8N- Y#8s$ NignxANMKANMstNginx A;F!g#$%6 nginx P%stop)rh_sus_q | exit 0$1;restart|configtest)$1;reload)rh_sus_q | exit 7$1第 2 章 Nginx 的安装和启动生成完了了给一个执行权限,然后使用 chkconfig 命令对其进行管理当对Nginx 的配置文件做

13、过一些更改后,希望在不中断当前服务的情况下,进行一个平滑的重启,可以使用如下命令。中的 reload 函数会首先对配置文件做一个语法格式的检查,使用的是如下令13rootexle # service nginx reloadrootexle # cp nginx /etc/init.d/rootexle #od 700 /etc/init.d/nginx rootexle # chkconfig -add nginx;force-reload) force_reload;sus) rh_sus;condrestart|try-restart) rh_sus_q | exit 0;*)echo

14、$Usage: $0 start|stop|sus|restart|condrestart|try-restart|reload|force- reload|configtestexit 2esac第 2 章 Nginx 的安装和启动当语法格式检查通过后,会对 Nginx 发出一个标记为或者说是 HUP 的信号源,Nginx 收到后会关闭旧进程,打开新进程,如果有进程正在为一个用户提供服务,则会等待这次服务结束。当然也可以使用 service nginx restart 的方式去重启服务。它会先尝试以比较温柔的方式去结束进程,如果有进程没有被结束掉,那么 killall -9 nginx。关于

15、停止 Nginx,直接service nginx stop 即可,或者 kill 死所有的 Nginx 进程。14rootexle init.d# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf第 3 章 Nginx 的基本配置第3章Nginx 的基本配置第3.1节Nginx 主配置概述Linux 下基本上每个服务都会有它的主配置文件,该文件会定义服务应该如果去运行,使用些什么参数,启用些什么功能,相关会涉及到的一些操作文件在哪,所以主配置文件对服务是的。下面来分析一下 Nginx 的主配置文件。Nginx

16、的主配置文件默认情况下位于/usr/local/nginx/conf/nginx.conf 以下为 Nginx配置文件一些参数的注释。15#user nobody; #指定使用的用户worker_proses 1;开启的进程数,一般设置 1-5#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;定义错误日志,以及的日志等级#logs/nginx.;定义文件位置events # use kqueue | rtsig | epoll | /dev/poll | sel

17、ect | poll ;use epoll; #使用 epoll(linux2.6 的高性能方式)#Nginx 支持如下处理连接的方法(I/O 复用方法),这些方法可以通过 use 指令指定。第 3 章 Nginx 的基本配置16#select - 标准方法。 如果当前没有更有效的方法,它是编译时默认的方法。你可以使用配置参数 with-select_module 和 without-select_module 来启用或禁用这个模块。#poll - 标准方法。 如果当前没有更有效的方法,它是编译时默认的方法。你可以使用配置参数with-poll_module 和 without-poll_mo

18、dule 来启用或禁用这个模块。#kqueue - 高效的方法,使用于 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X. 使处理器的 MacOS X 系统使用 kqueue 可能会造成内核。#epoll - 高效的方法,使用于 Linux 内核 2.6 版本及以后的系统。在某些版本中,如 SuSE 8.2, 有让 2.4 版本的内核支持 epoll 的补丁。#rtsig - 可执行的实时信号,使用于 Linux 内核版本 2.2.19 以后的系统。从Linux 内核版本 2.6.6-mm2 开始,这个参数就不再使用了.#/dev/poll -

19、高效的方法,使用于 Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+.#eventport - 高效的方法,使用于 Solaris 10. 为了防止出现内核, 有必要安装 这个安全补丁。worker_connections 1024;worker_connections 51200; #每个进程最大连接数(最大连接=连接数 x 进程数)http includemime.types; #文件扩展名与文件类型表default_type application/octet-stream; #默认文件

20、类型#log_format main $remote_addr - $remote_user $time_local $request #$sus $body_bytes_sent $http_referer #$http_user_agent $http_x_forwarded_for;第 3 章 Nginx 的基本配置17#acs_log logs/acs.log main;sendfileon;#开启高效文件传输模式 #tcp_nopushon;#该选项用于防止网络阻塞 #keepalive_timeout 0;keepalive_timeout 65;#长超时时间#gzip on;#打

21、开gzip 压缩#fastcgi_connect_timeout 300;#fastcgi_send_timeout 300;#fastcgi_read_timeout 300; #fastcgi_buffer_size 128k; #fastcgi_buffers 4 256k; #fastcgi_busy_buffers_size 256k; #fastcgi_temp_file_write_size 256k; #fastcgi_temp_path /dev/shm;#fastcgi 连接超时时间和缓存server listen80;第 3 章 Nginx 的基本配置18server_n

22、ame localhost; #主机名#charset koi8-r;#默认字符编码 charset gb2312#acs_log logs/host.acs.log main;location / pass 路径匹配 所有以/开头的 不过需要注意的是如果之后也有以 / 开头的匹配项并且比此处更精确,则以之后表达式优先root html;index index.html index.htm;#error_page 404/404.html;# redirect server error pages to the sic page /50 x.html #error_page 500 502 5

23、03 504 /50 x.html; location = /50 x.html #精确的匹配,并且不再向下匹配root html;第 3 章 Nginx 的基本配置19#location .$ 正则表达式匹配 一旦匹配则不再向下匹配#proxy_pass;# pass thescripts to FastCGI server listening on :9000 #location .$ #roothtml;#fastcgi_pass :9000;#指定 fastcgi 的地址端口#fastcgi_index index.;#fastcgi_param SCRIPT_FILENAME /sc

24、ripts$fastcgi_script_name; #includefastcgi_params;# deny acs to .htacs files, if Apachesroot # concurs with nginxs one#location /.ht #deny all;第 3 章 Nginx 的基本配置20不允许以.ht 开头的文件# another virtual host using mix of IP-, name-, and port-based configuration #server #listen8000;#listensomename:8080;#server

25、_name somename alias another.alias;#location / #root html;#index index.html index.htm; #以上在配置虚拟主机# HTTPS server #server #listen443;第 3 章 Nginx 的基本配置第3.2节Nginx 下的虚拟主机配置利用虚拟主机技术,可以把一台真正的主机分成许多虚拟的主机,每一台虚拟主机都具有独立的和IP 地址,具有完整的ernet 服务器(www, FTP,)功能。 虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一立的主机完全一样。效果一样但21#server_name

26、localhost;#sslon;#ssl_cert.pem;#ssl_key cert.key;#ssl_ses_timeout 5m;#ssl_protocols SSLv2 SSLv3 TLSv1;#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;#ssl_prefer_server_ciphers on;以上为 ssl 配置#location / #root html;#index index.html index.htm; #第 3 章 Nginx 的基本配置费用却大不一样了。由于多台 虚拟主

27、机 共台真实主机的资源,每个 虚拟主机用户承受的硬件费用、网络的网络!费用、通信线路的费用均大幅度降低,ernet 真正成为人人用得起虚拟主机共分为三种:基于的虚拟主机,基于端口的虚拟主机和基于名称的虚拟主机。前两种由于受到成本和客户使用的限制,相对使用的没有基于名称的虚拟主机多,此处只介绍基于名称的虚拟主机。Nginx 的虚拟主机配置:上述配置中, 定义了三个虚拟主机。前两个 server, 通过“”和 “om” 可以分别正确的。如果浏览器直接通过 IP 地址或者其他指向这台机器的, 那么到的是第三个 server 配置。第三个 server 为一22server listen 80; se

28、rver_name.server listen 80; server_name.server listen 80 default;.第 3 章 Nginx 的基本配置个默认配置, 请注意它没有“server_name”指令, 并且“listen”指令包含一个“default”关键字。第3.3节安全的连接 https众所周知,在互联网上冲浪,一般都是使用的 http 协议(超文本传输协议),默认情况下数据是明文传送的,这些数据在传输过程中都可能会获和,因此是不安全的。https 可以说是 http 协议的安全版,就是为了满足对安全性要求比较高的用户而设计的。如果您的邮件中有敏感数据,不希望如果您

29、希望您在使用邮箱的过程中更安全,那么Nginx 的https 配置方法:;如果您不希望被盗用帐号信息,您使用 https 安全连接。首先生成一对。你需要使用到 openssl 命令,所以请确认系统已经安装过此包RHEL5 中在/etc/pki/tls/certs 目录有个首先切换到此目录可以帮助简化生成的过程,所以生成私钥去除以便使用时不询问生成颁发机构,用于颂发公钥颁发公钥,不过由于并不是去 CA中心申请的公钥,所以在使用的时候,客户23rootexle certs# openssl x509 -in server.csr -req -signkey server.key -days 365

30、-out server.crtrootexle certs# make server.csrrootexle certs# openssl rsa -in server.key -out server.keyrootexle # cd /etc/pki/tls/certsrootexle certs# cd /etc/pki/tls/certs rootexle certs# make server.key第 3 章 Nginx 的基本配置端浏览器会跳出未受信任的警告。如果你 money 够多,请去 CA 申请。第3.4节Nginx 日志管理如果你想对你的服务器了如指掌,那日志的阅读是必不可少

31、的,可以通过日志,了解到你的服务器是否正常运行,有谁在你的服务器,每天的量是多少,有没有的不受欢迎的等等。24server listen443; server_namesslon;ssl_/etc/pki/tls/certs/server.crt; ssl_key /etc/pki/tls/certs/server.key;以上两句在指定所存放的路径ssl_ses_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1;ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;#允

32、许的,指定为 OpenSSL 支持的格式 ssl_prefer_server_ciphers on;#依赖 SSLv3 和 TLSv1 协议的服务器将优先于客户端.第 3 章 Nginx 的基本配置在Nginx 主配置中有关 Nginx 日志的相关参数主要有两条。对于一个日均 PV 数十万以上的来说,日志的增长将会很迅速,一天的日志几个属于正常情况。所以为了单个日志文件不至于太大,需要定期的去截断的日志。不可很可惜,Nginx 默认并不支持所熟悉的 cronolog 方式来对每天的日志进行截断,那么可以通过以下方法来解决。然后以 crond 的方式或者 logroe 的方式运行。不过会有人觉的

33、不使用 cronolog 就会很不爽,因为这个工具的可以非常简单的帮助我们定期的分隔日志,所以为了大家可以用的很爽,我这里介绍一种通过管道符文件另僻溪径的方法使用 cronolog。首先并编译安装cronolog25rootexle # tar xf cronolog-1.6.2.tar.gz rootexle # ./configurerootexle # make & make install rootexle # service nginx stoprootexle # mv /usr/local/nginx/logs/acs.log/usr/local/nginx/logs/acs.l

34、og.bakrootexle # mkfifo/usr/local/nginx/logs/acs.logrootexle # cronolog /usr/local/nginx/logs/acs.log.%Y%m%d /.bashrcrootserver# . /.bashrc第 5 章 源代码搭建 LNMP第5.4节编译安装在安装之前要首先安装以下几个库libiconv 用于实现一个字符编码到另一个字符编码的转换。可以使mhash 是一个支持加密算法。演函数库,它可以支持多种演算法,例如最出名的MD5、SHA1 或 GOST,还有其它多种的演算法。spawn-fcgispawn-fcgi 原

35、本是 lighttpd 的一个用来控制-cgi 的工具,现在已从lighttpd 中独立出来成为一个开源项目。可以用它来启动,控制,管理-cgi 的进程。使用它有诸多好处,比如可以将运行-cgi 的主机与 Nginx 分离开来,以减轻Nginx 服务器的负担,或者用来扩展架构,做的性能消耗等等。的负载分担。减少进程的重复创建所带来libevent 是一个事件触发的网络库,适用于 windows、linux、bsd 等多种使用 select、epoll、kqueue 等系统调用管理事件机制。编译安装 libiconv:,编译安装:编译安装 libl:36rootserver-2.5.7# ./c

36、onfigure -prefix=/usrrootserver-2.5.7# make & make installrootserver libiconv-1.13.1# ./configure -prefix=/usrrootserver libiconv-1.13.1# make & make installlibiconvlibl mhash spawn-fcgilibevent第 5 章 源代码搭建 LNMP编译安装 mhash:编译安装 spawn-fcgi:编译安装 ibevent:编译安装:37rootservhp-5.2.14# ./configure -prefix=/usr

37、/local/ -enable-fastcgi -enable-fpm-enable-discard-path -enable-force-cgi-redirect -with-config-file-path=/usr/local/etc -with-=/usr/local/ -with-i=/usr/local/bysql_config -with-iconv-dir=/usr -with-freetype-dir -with-jpeg-dir -with-png-dir rootserver libevent-1.4.14b-stable# ./configure -prefix=/us

38、rrootserver libevent-1.4.14b-stable# make & make installrootserver spawn-fcgi-1.6.3# ./configurerootserver spawn-fcgi-1.6.3# make & make installrootserver mhash-# ./configure -prefix=/usr/local/mhashrootserver mhash-# make & make installrootserver libl# ./configure -enable-l-installrootserver libl#

39、make & make install第 5 章 源代码搭建 LNMP38-with-gd -with-zlib -with-libxml-dir -with-curl -with-curlwrappers -with-openssl -with-mhash=/usr/local/mhash/ -with-xmlrpc -with-mcrypt -with-ldap -with-ldap-sasl -enable-xml -disablath -enable-discard-path -enable-safe-mode -enabcmath -enable-shmop -enable-sysv

40、sem -enable-inline-optimization -enable-mbregex -enable-mbstring -enable-gd-native-ttf -enable-ftp tl -enable-sockets -enable-zip -disable-debug -disable-ipv6第 5 章 源代码搭建 LNMP其中 -enable-discard-path打开这个选项,用户就不能透过浏览器等和系统安全相关的文件。.htacs-enable-force-cgi-redirect 若使用 CGI VER本选项会增加安全性。例如用户读模式来执行的设,打开遇到比较了

41、来读解系统的级用户可能会自已输入以下和 Apache 编译在一起,让取相关信息。若加入本选项。-disabl-enab变成 Apache 的一部份,则不需要ath rpath 是和动态库的加载运行相关。cmath 高精度数算组件。-enable-shmop 和 -enable-sysvsem 使得你的系统可以处理相关的 IPC函数 。IPC 是一个 Unix 标准通讯机制,它提供了使得在同一台主机不同进程之间可以互相通讯的方法。-enable-inline-optimization 栈堆指针和优化线程。tl 多线程优化。第5.5节安装扩展插件需要安装如下扩展:memcache 是一个高性能的分

42、布式的内存对象缓存系统,通过在内存里一个的巨大的 hash 表,它能够用来各种格式的数据,包括图像、文件以及数据库检39memcache eaccelerator PDO_Imagekrootservhp-5.2.14# make ZEND_EXTRA_LIBS=-liconv rootservhp-5.2.14# make installrootservhp-5.2.14# cp.ini-dist /usr/local/etc/.ini第 5 章 源代码搭建 LNMP索的结果等。eAccelerator 加速引擎是基于 mmcache 开发的加速优化。通过编译和缓存来增加的性能,使得在编译的

43、状态下降低服务器负载,对服务器的开销几乎完全消除。它还对达 10 倍。起优化作用,能加快其执行效率,提高应用执行速度最高是一个的扩展模块。PDO_Image件套装。k 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软编译安装 memcache:编译安装 eaccelerator:编译安装 PDO_:编译安装 Imagek:40rootserver Imagek-6.5.9-10# ./configure rootservDO_-1.0.2# /usr/local/bin/izerootservDO_-1.0.2# ./configure -prefix=/usr/local/pdo-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论