Nginx是一个高性能的http服务器和反向代理服务器,是一个高度模块化的web服务器,和Apache的模块化不同,Nginx的模块不支持动态编译,Nginx要加入新的第三方模块的时候,必须先下载模块,然后重新编译Nginx,而Apache只需要将新加入的模块编译成so文件,然后配置文件指定是否加载即可,无需重新编译Apache。并且Nginx的rewrite模块会使用正则表示式进行匹配,因此需要pcre软件库的支持,另外ssl加密需要openssl-devel软件库的支持,gzip压缩传输需要zlib-devel软件库的支持。编译安装Nginx之前确定这三个软件库已经安装。
目录
Nginx的配置文件结构
Nginx的配置文件参数
虚拟主机
LNMP架构
状态监控页面
URL重写
Nginx的负载均衡功能
Nginx的缓存服务器应用
Nginx的性能优化
Nginx的I/O模型
1.Nginx的配置文件结构
通过epel源安装的Nginx的配置文件在/etc/nginx/目录下,对于编译安装的Nginx,其配置文件在安装目录下的conf目录下,Nginx配置文件以block块的形式组织,每个block以{...}为界限,block块中包含各种指令。整体结构分为main层、events块、http块,main是最高层,从上到下继承,位于main层的指令会向下继承至events和http,events块指令会继承至http。http往下分为多个server块,server块再往下分为location块,继承关系是从外到内。
一个完整的Nginx的配置结构如下,
... #全局块,包含main层指令,同时包含events块和http块
events { #events块,包含events指令
...
}
http #http块,包含http指令和多个server块
{
... #http全局指令块
server #server块
{
... #server全局指令块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
2.Nginx的配置文件参数
通过yum安装的Nginx,其配置文件类型如下图所示,当然了,Nginx都会默认为每种类型的配置文件提供一个.default结尾的文件用以参考。
主配置文件nginx.conf
对于rpm安装的Nginx而言,它的主配置文件是由/etc/sysconfig/nginx文件决定的,其中的NGINX_CONF_FILE参数定义主配置文件。
主配置文件的主要参数如下,关于main全局配置
user nginx nginx; 定义Nginx的worker进程的用户和用户组,默认是nobody
worker_processes auto; 定义开启worker进程的数量
error_log(日志错误级别debug|info|notice|warn|error|crit) 定义全局错误日志文件
pid 定义nginx的master进程ID的存储文件,防止程序启动多个实例
进程运行后会给pid文件加一个文件锁,只有获得该锁的进程才具有写权限,将自身的pid写入pid文件中,其他试图获得该锁的进程会退出。
关于events事件驱动配置
use epoll; 定义Nginx工作时的I/O模型,支持的I/O模型有select、poll、epoll等,其中select和poll是标准的方式,epoll是高效的工作方式,也是Nginx优先考虑的I/O模型。