Nginx技术的深入剖析 之 Nginx软件模块说明

原创 陈宝佳  2019-03-15 07:16  阅读 53 次 评论 0 条
行云管家,新手有礼

Nginx软件模块说明

1、Nginx核心功能模块

Nginx核心功能模块负责Nginx的全局应用,主要对应主配置文件的main区块和Events区块区域,这里有很多Nginx必须的全局参数配置。

2、标准的http功能模块集合

在生产环境中,配置、调整及优化Nginx软件,主要就是根据这些模块的功能修改相应的参数来实现。通过官方地址可以查看到上述及更多模块的详细使用帮助。

Nginx http功能模块说明

ngx_http_core_module	        包括一些核心的http参数配置,对应Nginx的配置为HTTP区块部分

ngx_http_access_module	        访问控制模块,用来控制网站用户对Nginx的访问

ngx_http_gzip_module	        压缩模块,对Nginx返回的数据压缩,属于性能优化模块

ngx_http_fastcgi_module     	FastCGI模块,和动态应用相关的模块,例如PHP

ngx_http_proxy_module	        proxy代理模块

ngx_http_upstream_module	    负载均衡模块可以实现网站的负载均衡功能及节点的健康检查

ngx_http_rewrite_module	        URL地址重写模块

ngx_http_limit_conn_module	    限制用户并发连接数及请求数模块

ngx_http_limit_req_module	    根据定义的key限制Nginx请求过程的速率

ngx_http_log_module	            访问日志模块,以指定的格式记录Nginx客户访问日志信息

ngx_http_auth_basic_module	    Web认证模块,设置Web用户通过帐号、密码访问Nginx

ngx_http_ssl_module         	ssl模块,用于加密的http连接,如https

ngx_http_stub_status_module 	记录Nginx基本访问状态信息等的模块

3、Nginx的目录结构说明

Nginx安装后整体的目录结构及文件功能。

[root@Cloudbility tools]# tree /application/nginx

/application/nginx
├── client_body_temp
├── conf        #这是Nginx所有的配置文件
   ├── fastcgi.conf    #fastcgi相关参数的配置文件
   ├── fastcgi.conf.default    #fastcficonf的原始备份
   ├── fastcgi_params      #fastcgi的参数文件
   ├── fastcgi_params.default
   ├── koi-utf
   ├── koi-win
   ├── mime.types      #媒体类型
   ├── mime.types.default
   ├── nginx.conf      #Nginx默认的主配置文件
   ├── nginx.conf.default
   ├── scgi_params     # scgi相关参数文件,一般用不到
   ├── scgi_params.default
   ├── uwsgi_params    # uwsgi相关参数文件,一般用不到
   ├── uwsgi_params.default
   └── win-utf
├── fastcgi_temp        # fastcgi临时数据目录
├── html    # 这是编译安装时Nginx的默认站点目录,类似Apache的默认站点目录htdocs目录
   ├── 50x.html    # 错误页面优雅替代显示文件,例如:出现502错误时会调用别的网页。
   └── index.html      # 默认的首页文件,在实际环境中大家习惯用(注意不是必须)index.html,index.php.index.jsp来做网站的首页文件。首页文件名字是在nginx.conf中事先定义好的。
├── logs    # 这是Nginx默认的日志路径,包括错误日志及访问日志。
   ├── access.log      # 这是Nginx的默认访问日志文件,使用tail -f access.log,可实时观看网站访问情况信息。
   ├── error.log       # 这是Nginx的错误日志文件,如果Nginx出现启动故障等问题,一定要看这个错误日志
   └── nginx.pid   # Nginxpid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp      # 临时目录
├── sbin        # 这是Nginx命令的目录,如Nginx的启动命令nginx
   └── nginx # Nginx的启动命令nginx
├── scgi_temp   # 临时目录
└── uwsgi_temp  # 临时目录

提示:所有结尾为default的文件,都是备份文件,其他未做注释的文件在工作中较少用到,因此建议你也不要理会。学习要学会抓重点,先把常用的学会,再研究其他的。可以通过查询文档进一步了解。

4、Nginx主配置文件(nginx.conf)解析

整个配置文件是以区块的形式组织的,一般,每一个区块以一个大括号{}来表示,区块可以分为几个层次。

整个配置文件中,main区位于最上层,在main区下面可以有Events区,HTTP区等层级,在HTTP区中又包含一个或多个server区,每个server区中又可有一个或多个location区,Nginx整个配置文件的主体框架为:

[root@Cloudbility conf]# egrep -v "#|^$" nginx.conf   排除空行和注释
worker_processes  1;    #worker进程的数量
events {    # 事件区块开始
    worker_connections  1024;   # 每个worker进程支持的最大连接数
}   # 事件区块的结束
http {      # http区块的开始
    include       mime.types;       #Nginx支持的媒体类型
    default_type  application/octet-stream;     # 默认的媒体类型
    sendfile        on;     # 开启高效传输模式
    keepalive_timeout  65;  # 连接超时
    server {        # 第一个server区块开始,表示一个独立的虚拟主机站点
        listen       80;    # 提供服务的端口,默认为80
        server_name  localhost;     # 提供服务的域名主机名
        location / {        # 第一个location区块开始
            root   html;    # 站点的根目录,相当于Nginx的安装目录
            index  index.html index.htm;    # 默认的首页文件,多个空格分开
        }       # 第一个location区块结果
        error_page   500 502 503 504  /50x.html;出现对应的http状态码时,使用50x.html回应客户
        location = /50x.html {  # location区块开始,访问50x.html
            root   html;    # 指定对应的站点目录为html
        }
    }
}       # http区块结束

5、Nginx其他的配置文件

如果是配合动态服务(例如PHP服务)。

Nginx软件还会用到扩展的FastCGI相关配置文件,这个配置文件是通过在nginx.conf主配置文件中嵌入include命令来实现的,不过默认情况下是注释状态,不会生效。

fastcgi.conf配置文件的初识内容如下:

[root@Cloudbility conf]# cat fastcgi.conf

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

fastcgi_params默认配置文件的内容如下:

[root@Cloudbility conf]# cat fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

上述未做注释的目录或文件是比较少用到的,有关动态扩展配置等我们到PHP服务的时候再来讲解。

(完)

本文地址:https://www.cloudbility.com/club/10198.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:cloudbility
版权声明:本文为原创文章,版权归 陈宝佳 所有,欢迎分享本文,转载请保留出处!

发表评论


表情