zoukankan      html  css  js  c++  java
  • 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,则被视为非活动项,其不会被缓存

  • 相关阅读:
    抽屉视图第三方控件
    数组NSArry注意事项
    NSInteger 和 NSUInteger 比较大小的注意事项
    IOS应用中的二维码生成和二维码扫描解析
    FMDatabase 的使用(转)
    ASIHTTPRequest的简单使用
    关于MBProgressHUD的使用
    获取文件夹大小
    31. Next Permutation(中等,搞清楚啥是 next permutation)
    Deap Learning (吴恩达) 第一章深度学习概论 学习笔记
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/11157155.html
Copyright © 2011-2022 走看看