高性能Web服务器Nginx使用指南

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块,继承关系是从外到内。

image.png

image.png

一个完整的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结尾的文件用以参考。

高性能Web服务器Nginx使用指南

主配置文件nginx.conf

对于rpm安装的Nginx而言,它的主配置文件是由/etc/sysconfig/nginx文件决定的,其中的NGINX_CONF_FILE参数定义主配置文件。

高性能Web服务器Nginx使用指南

主配置文件的主要参数如下,关于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模型。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/609fc2f5a92e09977537b71632533576.html