ngx_http_core_module模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ngx_http_core_module模块相关的知识,希望对你有一定的参考价值。

一、与套接字相关的配置:

1、server {...} 配置一个虚拟主机   

server {
    listen address[:PORT]|PORT;
    server_name SERVER_NAME;
    root /PATH/TO/DOCUMENT_ROOT
}

2、listen PORT|address[:PORT]|unix:/PATH/TO/SOCKET_FILE 

     listen address[:PORT] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]

  • default_server 设定为默认虚拟主机

  • ssl 限制能够通过ssl连接提供服务

  • backlog=number 超过并发连接数后,新请求进入后援队列的长度

  • rcbuf=size 接收缓冲区大小

  • sndbuf=size 发送缓冲区大小

    注意:

        1)基于port;

            listen PORT;指令监听在不同的端口(即:包括80端口在内的端口都是监听的)

        2)基于ip的虚拟主机

            listen IP:PORT IP地址不同

        3)基于hostname

            server_name FQDN;指令指向不同的主机名

    注意:有子配置文件的时候,访问默认站点时,生效的配置文件为按子文件名字母排序的顺序,但是如果指定了default_server时,则是指定的站点为默认站点

3、server_name name ...;

  •     虚拟主机的主机名后可跟由多个空白字符分割的字符串

  •     支持*通配任意长度的任意字符

                  server_name *.yuanjianchao.tech www.yuanjianchao.*

  •     支持~起始的字符做正则表达式模式匹配,性能原因慎用

                 server_name ~^www\d+\.magedu\.com$ ('\d 表示 [0-9]')

    匹配优先级机制从高到低

        1)首先是字符串精确匹配 如:www.jianchao.tech

        2)左侧*通配符 如:*.jianchao.tech

        3)右侧*通配符 如:www.jianchao.*

        4)正则表达式 如:~^.*\.jianchao\.tech$

        5)default_server

4、tcp_nodelay on | off(Context:http,server,location)

    在keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟发送,合并多个请求后再发送,默认为on,不延迟发送

5、sendfile on | off

    是否启用sendfile功能,在内核心中封装报文直接发送默认为off

6、server_tokens on | off | build | string

    是否在相应报文而非server首部显示nginx版本(建议在主配置文件中改为off)

7、root

    设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径,可用于http, server, location, if in location    

server {
       ...
      root /data/www/vhost1;
}

8、location [ = | ~ | ~* | ^~ ] uri { ... }

    location @name { ... }

    在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置

    示例:

server {
        ...
    server_name www.yuanjianchao.tech;
    location /images/ {
        root /data/imgs/;
    }
}

    实验结果:http://www.yuanjianchao.tech/images/logo.jpg--> /data/imgs/images/logo.jpg

    =:对URI做精确匹配;

location = / {
    ...
}

匹配结果:http://www.magedu.com/ 匹配 http://www.magedu.com/index.html 不匹配

  • ^~:对URI的最左边部分做匹配检查,不区分字符大小写

  • ~:对URI做正则表达式模式匹配,区分字符大小写

  • ~*:对URI做正则表达式模式匹配,不区分字符大小写

  • 不带符号:匹配起始于此uri的所有的uri

匹配优先级从高到低:

    =, ^~, ~/~*, 不带符号

9、alias path(适用范围location)

    路径别名,文档映射的另一个机制;仅能用于location上下文

示例:

http://www.magedu.com/bbs/index.php

location /bbs/ {
    alias /web/forum/;
} --> /web/forum/index.html(实际访问文件)
location /bbs/ {
    root /web/forum/;
} --> /web/forum/bbs/index.html(实际访问文件)

注意:

    location中使用root指令和alias指令的意义不同

        (a) root,给定的路径对应于location中的/uri/左侧的/

        (b) alias,给定的路径对应于location中的/uri/右侧的/

10、index file ...;(Context:http,server,location)

    指定默认网页资源,注意:所属模块ngx_http_index_module

11、error_page code ... [=[response]] uri;(Context:http, server, location, if in location) 所属模块:ngx_http_core_module

    定义错误页,以指定的响应状态码进行响应

        error_page 404 /404.html

        error_page 404 =200 /404.html

12、try_files file ... uri;

        try_files file ... =code;

       按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误

location /images/ {
    try_files $uri /images/default.gif;(路径是相对于网站root目录的路径,即是url路径) 
}
location / {
    try_files $uri $uri/index.html $uri.html =404;
}

二、定义客户端请求的相关配置

13、keepalive_timeout timeout [header_timeout];(Context:http,server,location)

    设定保持连接超时时长,0表示禁止长连接,默认为75s

14、keepalive_requests number;(Context:http,server,location)

    在一次长连接上所允许请求的资源的最大数量默认为100

15、keepalive_disable none | browser ...(Context:http,server,location)

    对哪种浏览器禁用长连接

16、send_timeout time;(Context:http,server,location)

    向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长

17、client_body_buffer_size size;

    用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置

18、client_body_temp_path path [level1 [level2 [level3]]];

     设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量目录名为16进制的数字;client_body_temp_path /var/tmp/client_body 1 2 2

        1 1级目录占1位16进制,即2^4=16个目录 0-f

        2 2级目录占2位16进制,即2^8=256个目录 00-ff

        2 3级目录占2位16进制,即2^8=256个目录 00-ff

三、对客户端进行限制的相关配置

19、limit_rate rate;

    限制响应给客户端的传输速率,单位是bytes/second默认值0表示无限制

20、limit_except method ... { ... },

    仅用于location限制客户端使用除了指定的请求方法之外的其它方法method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,PROPPATCH, LOCK, UNLOCK, PATCH

limit_except GET {
    allow 192.168.1.0/24;(可以是特定IP)
    deny all;
} 除了GET和HEAD 之外其它方法仅允许192.168.1.0/24网段主机使用


四、文件操作优化的配置

21、aio on | off | threads[=pool];(异步)

    是否启用aio功能

22、directio size | off;

    是否同步(直接)写磁盘,而非写缓存,在Linux主机启用O_DIRECT标记,则文件大于等于给定大小时使用,例如directio 4m

23、open_file_cache off;

        open_file_cache max=N [inactive=time];

    nginx可以缓存以下三种信息:(元数据)

        (1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间

        (2) 打开的目录结构

        (3) 没有找到的或者没有权限访问的文件的相关信息

  • max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理

  • inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项 , 将被删除

24、open_file_cache_errors on | off;

    是否缓存查找时发生错误的文件一类的信息 默认值为off

25、open_file_cache_min_uses number;

    open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项默认值为1

26、open_file_cache_valid time;

    缓存项有效性的检查频率 默认值为60s


以上是关于ngx_http_core_module模块的主要内容,如果未能解决你的问题,请参考以下文章

ngx_http_core_module模块

nginx中ngx_http_core_module模块

Nginx模块

细述:nginx http内核模块提供的变量和解释

Nginx Http框架的理解

Nginx——模块