Nginx是一款轻量级的高性能HTTP和反向代理服务器以及IMAP/POP3邮件代理服务器,由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的站点Rambler.ru开发的。Nginx为开源软件,因其并发能力强、系统资源占用小等优点而受到大家的欢迎。
Nginx不仅可以做为HTTP和反向代理服务器,也可以做为负载均衡服务器;Nginx的使用C语言编写,能在大部分的Unix like OS上编译运行,并且有Windows移植版;根据官方的说法,Nginx支持50000的并发连接数并且占用的内存非常小;Nginx配置简单,性能稳定。
1、Nginx的版本选择
Nginx的官方网站为nginx.org。
在Nginx的官网上可以看到当前提供以下版本的Nginx下载:
其中,Mainline version为主线版本,也就是当前正在主力开发的版本,其更新速度非常快;Stable version为最新稳定版,是建议在生产环境中使用的主力版本,性能稳定,BUG少;Legacy versions为遗留的历史稳定版本。
在学习Nginx的这几篇文章中,我们将使用最新的稳定版本nginx-1.14.2。
2、安装Nginx
Nginx可以通过YUM安装,也可以在官网上下载源码进行安装。通过YUM进行安装时需要使用Nginx提供的源来安装(默认的源没有Nginx,需要EPEL源,但是EPEL源里的Nginx版本太低),具体可参见http://nginx.org/en/linux_packages.html#stable。
这里使用源码来安装Nginx,安装的版本为Stable version,nginx-1.14.2,操作系统为CentOS 7.6.1810。
2.1、安装Nginx的依赖环境
Nginx主要需要的依赖包有zlib、pcre、openssl。zlib用于支持gzip模块,pcre用于支持rewrite模块,openssl用于支持ssl功能。
这里我们通过YUM来安装这三个依赖包:
[root@localhost apps]# yum install zlib pcre pcre-devel openssl openssl-devel
2.2、创建专用用户以运行Nginx
创建一个名为nginx的虚拟用户专门用来运行Nginx的子进程:
[root@localhost apps]# useradd -s /sbin/nologin nginx
2.3、编译安装Nginx
使用wget命令从官网下载nginx-1.14.2的tar.gz包,然后使用tar命令进行解压,进入解压后的目录,运行以下命令(将Nginx安装到/usr/local/nginx目录下):
[root@localhost nginx-1.14.2]# ./configure > --user=nginx > --group=nginx > --prefix=/usr/local/nginx > --pid-path=/var/run/nginx.pid > --lock-path=/var/lock/subsys/nginx > --with-http_stub_status_module > --with-http_ssl_module > --with-http_gzip_static_module > --with-pcre
configure时的常用参数:
- --user:指定启动Nginx的用户
- --group:指定启动Nginx的用户组
- --sbin-path:设置Nginx二进制文件的路径,默认为安装目录下的/sbin/nginx
- --conf-path:设置Nginx配置文件的路径,默认为安装目录下的/conf/nginx.conf
- --error-log-path:设置Nginx错误日志文件的路径,默认为安装目录下的/logs/error.log
- --http-log-path:设置Nginx访问日志文件的路径,默认为安装目录下的/logs/access.log
- --pid-path:设置Nginx的pid文件的路径
- --lock-path:设置Nginx的lock文件的路径
- --with-openssl:指定openssl源码包的路径。如果编译时没有指定该参数,则使用系统的openssl
- --with-pcre:启用正则表达式
- --with-http_stub_status_module:启用Nginx的状态监控模块
- --with-http_ssl_module:启用SSL模块
- --with-http_gzip_static_module:启用gzip压缩
更多configure参数可以使用./configure --help查看。
configure执行完毕无报错后,执行:
[root@localhost nginx-1.14.2]# make
make执行完毕且无报错后,执行:
[root@localhost nginx-1.14.2]# make install
等待命令执行完毕无报错,Nginx就安装完成了。
3、Nginx的目录结构
在Nginx安装完成后,将会在其安装目录下生成以下目录结构:
[root@localhost nginx]# ls conf html logs sbin
其中,conf目录下保存Nginx的配置文件;html目录为Nginx默认的网站根目录;logs目录保存Nginx的日志文件;sbin目录下为Nginx的可执行二进制文件,通过该文件可以运行Nginx。
4、Nginx配置文件
Nginx的配置文件位于安装目录下的conf目录内,其中的nginx.conf为Nginx的主配置文件。nginx.conf主要由以下五部分组成:
- main:全局配置
- events:配置Nginx的工作模式及连接数
- http:主要用来配置代理、缓存、日志格式等绝大多数功能和第三方模块。该部分可配置多个server
- server:位于http配置之内,用于配置虚拟主机的相关参数
- location:位于server之内,用于配置请求的处理规则
nginx.conf的五个组成部分间的关系如下图所示: