• nginx(二):基本应用


    配置文件详解

    event段配置

    1. worker_connections #;

        每个worker进程所能够响应的最大并发请求数量;

        nginx最大并发响应数=worker_proceses * worker_connections

    注意,nginx的worker_connections也受到worker_rlimit_nofile number的影响;

    1. use method

        method: [epoll|rgsig|select|poll];

        定义使用的事件模型;linux只能使用epoll;

    1. accept_mutex [on|off];

        默认on,各worker接收用户的请求的负载均衡锁;启用时,表示用于让多个worker轮流地、序列化地响应新请求;

    http配置段

    套接字相关配置

    1. server{.....}指令

             用来定义和配置一个虚拟主机

    eg:server {

             listen PORT

             server_name HOSTNAME1 HOSTNAME2 ...;

             root /PATH/;    

             }

    1. listen

             该指令用来指定在server{...}中接收请求的IP和port。

    a)         三种格式:

            listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

             listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

             listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

    b)         参数介绍

             default_server:默认虚拟主机。使用场景,在用户请求的主机不能匹配服务器上的所有虚拟主机时,使用default_server提供服务。

             ssl:设置使用ssl连接提供服务

             backlog:后援队列的长度,一般来说每一个应用程序,在此应用对应的内核缓冲中都有对应的缓冲接收,列入一个服务最大并发响应为100,单同时有200个并发此时使用到后援队列。

             unix:path:使用unix套接字文件通信。使用场景本机应用访问本地的nginx服务时。

             rcvbuf:接受缓冲区大小

             sndbuf:发送缓冲区大小

    1. server_name NAME1 NAME2 ....;

    a)         指明当前server的主机名。主机名支持通配符*,以及正则表达式~。

    b)         主机名匹配策略

                       首先做精确匹配;例如:www.magedu.com

                       左侧通配符;例如:*.magedu.com

                       右侧通配符,例如:www.magedu.*

                       正则表达式,例如:~^.*.magedu.com$

                       default_server

    1. tcp_nodelay on|off;

             默认值:on

             对keepalived模式下的连接是否启用TCP_NODELAY选项。基于TCP的连接每次都需要三次握手四次断开的过程,在通信时发送很小的数据包也需要这个过程,这样开销很大,浪费带宽。所以TCP有针对于此的优化,在客户端请求很小的资源时,会有一定延迟,多积累几个请求,一并处理。这会导致在客户端只访问一个小的资源时,会迟迟得不到响应。对于WEB服务器这种影响很致命,所以应该启用tcp_nodelay。

    1. sendfile  on|off;

             默认为 off,通常需要启动起来。

             在内核中直接封装响应报文,发送给资源请求客户端。

            

    路径相关配置

    1. root  PATH;

             设置WEB资源路径映射;用于指名用户请求的uri对应本地文件系统上的文档所在的目录路径。

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

             location @name { ... }

            

    a)         功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;简言之,即用于为需要用到专用配置的uri提供特定配置;

    b)         匹配规则

                      =:URI的精确匹配;一字不差。

                      ^~:URI的左半部分匹配,不区分字符大小写;

                      ~:做正则表达式匹配,区分字符大小写;

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

            

    c)         匹配优先级:精确匹配=、^~、~或~*、不带符号的URL;

    d)         使用场景eg:对于用户请求的某一 特定类型的资源,如.txt做压缩处理。

                       location  ~*.txt${

                                gzip on;

                                }

    1. alias path;

    a)         定义路径别名,文档映射的一种机制;只适用于location上下文

    b)         辨析root和alias的不同,我们来举例说明。

    a.1     访问http://www.A.com/sa/1.jpg

                                location /sa/ {

                                         alias /web/user/sa/;

                                }

                       对应的是/web/user/sa/1.jps。alias其实就是把我们访问的uri,替换为alias指定的uri

    a.2     location /sa/ {

                                         root /web/user/sa/;

                                }

                       对应的是/web/user/sa/sa/1.jps。root指令指定的是根。

    1. index file;

    定义默认站点主页面。

    1. error_page code ... [=[response]] uri;

             根据http的状态码重定向错误页面;

             error_page  404  /404.html

             error_page  404  =200  /404.html  (以指定的响应状态码进行响应)

                                                           

    1. try_files file ... uri;        

    eg:

             location /test {

             try_files test1.html  test2.html    test3.html  http://156.0.235.24/index.html

             }

       

             尝试查找第1至第N-1个文件,第一个即为返回给请求者的资源;若1至N-1文件都不存在,则跳转至最一个uri(必须不能匹配至当前location,而应该匹配至其它location,否则会导致死循环);

    客户端请求相关配置

    1. keepalive_timeout timeout [header_timeout];

             设定keepalive连接的超时时长;0表示禁止长连接;默认为75s;

            

    1. keepalive_requests number;

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

    1. keepalive_disable none | browser ...;

             指明禁止为何种浏览器使用keepalive功能;

             注意这个指令并不是进制keepalived功能,而是有些浏览器对此功能支持不好,此指令是为了指名对何种浏览器禁用keepalived功能。

    1. send_timeout time;

             发送响应报文的超时时长,默认为60s; 两次写操作的间隔时长

            

    1. client_body_buffer_size size;

             接收客户请求报文body的缓冲区大小;默认为16k;超出此指定大小时,其将被移存于client_body_temp_path指令指定的磁盘上;

    1. client_body_temp_path path [level1 [level2 [level3]]];

             设定用于存储客户端请求body的临时存储路径及子目录结构和数量;

              

             client_body_temp_path  /var/tmp/client_body  2 1;

                       2代表使用2个16进制字符来创建一级子目录,共有2^8(256)个。

                       1代表使用1个16进制字符来在每一个一级子目录下创建2^4(16)个二级级子目录,最多有三级.

    对客户端请求的进行限制

    1. limit_excpet  METHOD {...}

             限制客户端的请求方法,对指定范围之外的其它的方法进行访问控制;

            

             limit_except  GET {

                       allow  172.16.0.0/16;

                       deny all;

             }

             示例:curl -X PUT  http://1.1.1.1/download/index.html  ,put为GET之外的方法,所以会拒绝访问

    1. limit_rate  speed;

    a)         限制客户端每秒钟所能够传输的字节数,默认speed为0表示无限制;

    b)         eg:

             location /download/{

                       limit_rate 20;

                       root /web/;

             }

    c)         验证:weget http://ip:piort/download/1.txt。

    文件操作优化相关的配置       

    1. aio  on|off|threads[=pool];了解

             是否启用异步IO功能,默认关闭。

    1. directio  size|off; 指定直接IO大小,或者关闭直接IO功能。

             直接IO是指,直接将数据写入磁盘,而不是先缓存到内存中

    1. open_file_cache off;

             open_file_cache max=N [inactive=time];

             打开文件相关信息的缓存

                       nginx可以缓存以下三种信息:

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

                                (2) 打开的目录的结构;

                                (3) 没有找到的或者没有权限操作的文件的相关信息;

                       max=N表示可缓存的最大条目上限;一旦达到上限,则会使用LRU算法从缓

                                存中删除最近最少使用的缓存项;

                       inactive=time:在此处指定的时长内没有被访问过的缓存项是为非活动缓存项,非活动缓存是无效的,因此直接删除;

    1. open_file_cache_errors on | off;

             该配置项决定open_file_cache  是否缓存找不到其路径的文件,或没有权限没有权限访问的文件相关信息;

            

    1. open_file_cache_valid time;

             每隔多久检查一次缓存中缓存项的有效性;默认为60s;

            

    1. open_file_cache_min_uses number;

                       定义在     open_file_cache max=N [inactive=time]; 中inactive定义的时间内,最少被访问次数,如果访问次数少于number,则被视为非活动项,其不会被缓存

  • 相关阅读:
    Study Plan The TwentySecond Day
    Study Plan The Nineteenth Day
    Study Plan The TwentySeventh Day
    Study Plan The Twentieth Day
    Study Plan The TwentyFirst Day
    python实现进程的三种方式及其区别
    yum makecache
    JSONPath 表达式的使用
    oracle执行cmd的实现方法
    php daodb插入、更新与删除数据
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/11157155.html
Copyright © 2020-2023  润新知