一、简述
Nginx是一个高性能WEB服务器,除它之外Apache、Tomcat、Jetty、IIS,它们都是Web服务器
Nginx 相对基它WEB服务有什么优势:Tomcat、Jetty 面向java语言,先天就是重量级的WEB服务器,其性能与Nginx没有可比性。IIS只能在Windows操作系统上运行。Windows作为服务器在稳定性与其他一些性能上都不如linux操作系统,因此,在需要高性能Web服务器的场合下IIS并不占优。Apache的发展时期很长,而且是目前毫无争议的世界第一大Web服务器,其有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能Web服务器。
二、安装
1.环境准备:
1.linux内核2.6以上。 uname -a 查看内核, 因为2.6之后才支持epool ,在此之前使用select或pool多路复用的IO模型,无法解决高并发压力的问题
2.gcc编译器,需要自己去编译源码进行安装
3.PCRE库,PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式)是由Philip Hazel开发的函数库,目前为很多软件所使用,该库支持正则表达式。
4.zlib库,zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量。
5.OpenSSL开发库, 如果我们的服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它。
上面几个库都是Nginx 基础功能所必需的,我的虚拟机是可以上网的,可以使用yum 命令统一安装:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
2.Nginx安装的安装需要我们自己去下载源码进行编译安装,下载:http://nginx.org/en/download.html
3.解压编译:进入解压好的的目录先执行 ./configure 脚本,在执行make命令,就会将Nginx默认安装到/usr/local/nginx下面
4.进入/usr/local/nginx目录启动服务:./sbin/nginx
5.上面都是采用的默认安装,如果我要安装新的模块进去,可以查看http://nginx.org/en/docs/这里的模块说明进行安装。
以状态查看为例:
执行:./configure --with-http_stub_status_module 将该模块编译进去,make install 进行安装(会保留以前的版本)。进入安装目录,可以使用-V(大写,小写看版本)参数查看模块:
上面的文档说明中的 location = /basic_status {stub_status;} 加入到配置文件nginx.conf中 启动服务就可以使用这个模块服务了
查看状态:(配置中是80端口)
三、基础命令
查看命令帮助
./sbin/nginx -?
默认方式启动:
./sbin/nginx
指定配置文件启动
./sbing/nginx -c 配置文件目录
快速停止
./sbin/nginx -s stop
优雅停止
./sbin/nginx -s quit
热装载配置文件
./sbin/nginx -s reload
重新打开日志文件(把原来的日志文件备份了,新的日志需要写入新的文件中)
./sbin/nginx -s reopen
设置全局命令,如下表示设置启动用户为root
./sbin/nginx -g "user root;"
nginx至少有两个进程一个master进程和一个work进程,master进程负责处理nginx的相关指令;work进程负责处理请求,work进程可以在配置文件中设置个数