1、Nginx 简介
Nginx是一个高性能WEB服务器,除它之外 Apache、Tomcat、Jetty、IIS 它们都是 Web 服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能。Nginx 相对基它 WEB 服务有什么优势呢?
Tomcat、Jetty 面向 java 语言,先天就是重量级的 WEB 服务器,其性能与 Nginx 没有可比性
IIS 只能在 Windows 操作系统上运行。Windows 作为服务器在稳定性与其他一些性能上都不如类 UNIX 操作系统,因此,在需要高性能 Web 服务器的场合下 IIS 并不占优
Apache的发展时期很长,而且是目前毫无争议的世界第一大Web服务器,其有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能Web服务器,这也促使了Lighttpd和Nginx的出现。 下图可以看出07年到17 年强劲增长势头

2、编译与安装
linux 内核 2.6 及以上版本
只有 2.6 之后才支持 epool ,在此之前使用 select 或 pool 多路复用的 IO 模型,无法解决高并发压力的问题。通过命令 uname -a 即可查看
GCC 编译器
**
GCC(GNU Compiler Collection)可用来编译C语言程序。Nginx 不会直接提供二进制可执行程序,只能下载源码进行编译。
PCRE 库
**
PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式)是由 Philip Hazel 开发的函数库,目前为很多软件所使用,该库支持正则表达式。
zlib 库
**
zlib 库用于对 HTTP 包的内容做 gzip 格式的压缩,如果我们在 nginx.conf 里配置了 gzip on,并指定对于某些类型(content-type)的 HTTP 响应使用 gzip 来进行压缩以减少网络传输量。
OpenSSL 开发库
**
如果我们的服务器不只是要支持 HTTP,还需要在更安全的 SSL 协议上传输 HTTP,那么就需要拥有 OpenSSL 了。另外,如果我们想使用 MD5、SHA1 等散列函数,那么也需要安装它。
上面几个库都是Nginx 基础功能所必需的,为简单起见我们可以通过 yum 命令统一安装
sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
3、源码编译
nginx 下载页:http://nginx.org/en/download.html
# 安装所需要的库文件sudo apt-get updatesudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev# 下载 nginx 稳定版本wget http://nginx.org/download/nginx-1.16.1.tar.gz# 解压tar -zxvf nginx-1.16.1.tar.gz# 进入解压后的目录cd nginx-1.16.1# 配置并编译, 可能需要使用 root 用户./configure && make && make install
执行完成之后 nginx 运行文件 就会被安装在 /usr/local/nginx 下
4、模块更新
# 添加状态查查看等其它模块./configure --with-pcre --with-http_stub_status_module --with-http_ssl_module# 重新创建主文件make# 停止原有的 nginxps -ef | grep nginxkill -9 XXXX# 将新生成的 nginx 文件覆盖旧文件cp objs/nginx /usr/local/nginx/sbin/# 查看是否更新成功 显示了 configure 构建参数表示成功/usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.16.1built by gcc 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)built with OpenSSL 1.1.1 11 Sep 2018TLS SNI support enabledconfigure arguments: --with-pcre --with-http_stub_status_module --with-http_ssl_moduleroot@LEGION:/usr/local/nginx/sbin#
5、控制命令
查看命令帮助
./sbin/nginx -?
默认方式启动
./sbin/nginx
指定配置文件启动
./sbing/nginx -c /tmp/nginx.conf
指定 nginx 程序目录启动
./sbin/nginx -p /usr/local/nginx/
快速停止(直接杀死进程)
./sbin/nginx -s stop
优雅停止(等待目前正在访问的进程完成访问)
./sbin/nginx -s quit
热装载配置文件
./sbin/nginx -s reload
重新打开日志文件
./sbin/nginx -s reopen
设置全局命令,如下表示设置启动用户为root
./sbin/nginx -g "user root;"
