nginx配置介绍(二)

接《nginx配置(一)》

10.HTTP 包体只存储到磁盘文件中

语法client_body_in_file_only onlcleanloff;

认:client_ body_ in file only off;

块: http server location

说明: 值为非off 户请求HTTP 包体都会存储到件中,即使只0 字节当请束时,如on ,这个文件不被删除 般用调试定位题) ,如clean ,则删除文件

11. HTTP 包体尽量写入缰冲区

语法client_body_in_single_buffer on|off;

认:client_body_in_single_buffer off;

配置块 http server location

说明 用户请求中的HTTP 包体写人存缓冲区中当包体大超过了client_body_buffer_size ,还是会被写入文

12 . 存储HTTP 头的缓冲区大小

语法

client_header_buffer_size size;

默认:client_header_buffer_size lk;

配置块 http server

说明 HTTP 头缓区大有时, HTTP 头会超过这个大,这large_client_header_buffers 定义区将生效

13 . 存储超大HTTP 头部的缓冲区大小

语法:large_client_header_buffers number size;

默认:large_client_header_buffers 48k;

配置块 http server

说明 定义超大HTTP 头部缓区大HTTP 请求行( GET /index HTTP/1 .1 )的大超过了单个缓冲区个数,会返回Request URI too large”( 414 请求中般会有许多头域,每一个头域大小也超过单个缓区大,否会返回Bad reque st ( 400 请求行和请求头部总和不超过缓区个数×区大

14. 存储HTTP 包体的缓冲区大小

语法client_body_buffer_size size;

默认:client_body_buffer_size 8k/ 16k;

配置块 http server location

说明 定义接收HTTP 内存缓冲区大HTTP 包体会先接收到这块缓冲区里 再决定是否写入磁盘

15. HTTP 包体的临时存放目录

语法client_body_temp_path dir-path[levell[level2[level3)]];

默认:client_body_temp_path client_body_temp;

配置块: http 、server location

说明:定义HTTP 包体存放的临时目录接收HTTP 包体时,如果包体的大小大client_ body _ buffer_ size ,则会以一个递增的整数命名并存放到client body temp path 指定的目录中后面跟着的levell level2 level3 ,是为了防止一个目录下文件数量太多导致性能下降,这样可以按照临时文件名最多再使用3 层目录例如:client_body_temp_path /opt/nginx/client_temp 1 2;如果新上传的HTTP 包体使用00000123456 作为临时文件名,会被存放到这个目录中:/opt/nginx/client_temp/6/45/00000123456

16. 连接内存池

语法:connection_pool_size size;

默认:connection_pool_size 256;

配置块: http server

说明: Nginx 对每个建立成功的TCP 连接会预先分配一个内存池,本参数指定内存池大小,用于减少内核对于小块内存的分配次数过大的size 会占用更多的服务器内存,更小的size 则会引发更多的内存分配次数

17. 请求池尺寸

语法:request_pool_size size;

默认:request_pool_size 4k;

配置块: http server

说明: Nginx 为每个HTTP 请求分配一个内存池TCP 连接关闭时会销毁connection pool _size 指定的连接内存池, HTTP 请求结束时会销毁request_pool_size 指定的HTTP 求内存池但它们创建、销毁时间不同,因为一个TCP 连接可能复用于多个HTTP 请求

18.HTTP 头读取超时时间

语法:client_header_timeout time ( 默认单位:秒);

默认client_header_timeout 60;

配置块: http server location

说明:客户端和服务器建立连接后开始接收HTTP 头,如果读取超时,向客户端返回408 ( Request timed out )错误

19. 读取HTTP 包体超时时间

语法:client_body_time time;

默认:client_body_time 60;

配置块: http server location

说明:读取包体的超时时间

20. 发送响应的超时时间

语法send_timeout_time;

默认:send_timeout 60;

配置块: http server location

说明:发送响应的超时时间超时发生时Nginx 将关闭这个连接

21 . 重置超时连接

语法reset_timeout_connection onloff;

默认:reset_timeout_connection off;

配置块: http server location

说明:连接超时后向客户端发送RST 包重置连接选项打开后,在某个连接超时后,不是使用正常的次握手关闭TCP 连接,而是直接向客户端发送RST 重置包,不再等待用户应答,直接释放套接字相比正常关闭,这种设置可以避免许多处于FIN_WAIT_1 ,WAIT_2, TIME_WAIT 态的连接因为使用RST 重置连接会带来一些问题,所以默认关闭

22. 用户连接关闭方式

语法:lingering_close off l on l always;

默认:lingering_cose on;

配置块: http server location

说明:设置Nginx 关闭用户连接的方式always 表示关闭之前必须先处理连接上所有用户发送的数据; off 表示不管数据直接关闭; on 是中间值,一般都会处理完用户发送的数据,除非业务上认为这些数据是不必要的

23. 用户连接关闭时间

语法:lingering_time time;

默认lingering_time 30s;

配置块: http server location

说明: lingering_ close 启用后,这个配置项对于上传大文件很有用当用户请求的content-length 大于max_client_ body_ size 时, Nginx 会立即返回413 ( request engity too large)响应,但是很多客户端可能不处理413 返回值,仍然上传数据这时,经过lingering_time后, Nginx 不管是否还有数据在上传,直接把这个连接关掉

24. 用户连接关闭超时值

语法:lingering_timeout 5s;

配置块: http server location

说明: lingering_close 生效后,检查关闭连接前是否有用户发送的数据到达服务器如果超过lingering_timeout 时间后还没有数据可读,就直接关闭连接;否则,必须读取完连接缓冲区上的数据并丢弃后才会关闭连接

25. keepalive超时时间

语法:keepalive_timeout time;

默认:keepalive_timeout 75;

配置块: http server location

说明 一个keepalive 连接在闲置超过一定时后,服务器和浏览器都会关闭这个连接这个值是用于限制Nginx 服务器的, Nginx 会把这个值传给浏览器,但每个浏览器对待keepalive 的策略可是不同的

26. keepalive 连接上最大承载数

语法:keepalive_requests n;

默认keepalive_requests 100;

配置块 http server location

说明: keepalive 长连接上默认最多只能发送100 个请求

27. tcp 尼古拉算法开关

语法:tcp_nodelay on | off;

认:tcp_nodelay on;

配置块 http server location

说明:确定对keepalive 连接是否使用tcp_ nodelay 选项

28. tcp 协议nopush 开关

语法tcp_nopush on | off;

默认:tcp_nopush off;

配置块: http server location

说明 在打开send file 选项时,确定是否开启FreeBSD 系统上的tcp _nopu s h Linux系统上的tcp_ cork 功能打开tcp_nopush 后,将会在发送响应时把整个响应包头放到TCP 包中发送

29. MIME type 到文件扩展名的映射

语法type {…};

配置块: http server location

说明:定义MIME type 到文件扩展名的映射多个扩展名可以映射到同MIMtype 例如:

types{

    text/html html;

    text/html conf;

    image/gif gif;

    image/jpeg jpg;

}

30. 默认MIME type

语法default_type MIME-type;

认:default_type text/plain;

配置块 http server , location

说明: 当找不MIME type 的映射时,使用默认的MIME type 作为HTTP 域中的content-type

31 . MIME type 映射散列桶内存大小

语法:types_hash_bucket_size size;

认:types_hash_bucket_size 321641128;

置块: http server location

说明: Nginx 使用散列表存MIME type 映射,本指令定义了每个散列桶占用内存的

32. MIME type 映射散列桶大小

语法types_hash_max_size size;

认:types_hash_max_size 1024;

块: http server location

说明: 置影响散列的冲突率值越大,就消耗越多的内存,但冲突率越小,检索速度更值越 率高,检索效降低,但节省内存

33. HTTP 方法限制用户请求

语法limit except method ··· {" .. }

配置块: location

说明: Nginx 通过limit_except 后面指定的方法名限制用户请求方法名取值包括GET HEAD POST PUT DEL ETE MKCOL COPY MOVE OPTIONS PPROPFIND PROPPATCH LOCK UNLOCK PATCH 例如:

limit_except GET {

   allow 192.168.1.0/32;

   deny all;

}

上面方法中,允许GET 方法和HEAD 方法通过,其他方法禁止

34.HTTP 请求包体最大值

语法:client_max_body_size size;

默认client_max_body_size 1m;

配置块: http server location

说明:浏览器在发送较大包体的请求时,会在头部带content-type 段, client_max_body_size 是用来限制content_type 大小的,这就使得Nginx 不用等待至接收完所有的包体,会大大节约时间例如,当用户上传个1GB 的文件时, Nginx 接收完包头后发现包体超大,直接发送4 I 3 ( request entity too large )响应给客户端

35 . 对请求限速

语法:limit_rate speed;

默认:limit_rate 0;

配置块 http server location if

说明 限制客户端每秒传输字节数默认为0 ,表示不限速针对不同客户端,可以用$limit rate 参数执行不同的限速策略例如:

server{

    if ($slow)

    set $limit rate 4k;
}

36. 限速闽值

语法limit_rate_after time;

默认limit_rate_after 1m;

配置块 http server location if

说明:此配置表示Ngi nx 客户端发送的响应长度超过limit _rate after 后才开始限速

例如:

limit_rate_after 1;

limit_rate 100k;

37. sendfile 系统调用

语法

sendfile  on | off;

默认:sendfile off;

配置块: http server location

说明:可以启用Linux 上的sendfile 系统调用发送文件,它减少了用户态与核心态之间的两次内存复制,可以从磁盘中读取文件后直接在内核态发送到网卡,提高了效率

38.AIO 系统调用

语法:aio on l off;

默认:aio off;

块: http server location

说明:表示是否在FreeBSD Linux 系统上启用内核级别的异步文件I / O 功能, AIO与se ndfile 是互斥

39. direction 选项

语法:directio size | off;

默认:directio off;

置块 http server location

说明:在FreeBSD Linux 系统上使用O DIRECT 选项读取文件, 区大小为size,对大文件读取速度有优化作用,与se ndfile 互斥

40 . direction 选项对齐尺寸

语法:directio_alignment size;

默认:directio_alignment 512;

配置块: http server location

说明 directio 一起使用,指定以directio 方式读取文件时的对齐方式。一般情况下,512 B 足够了,但对一些高性能文系统, Linux 下的XFS 文件系统,可能需要设置到4KB 作为对齐方式

41. 打开文件缓存

语法:open_file_cache max =N[inactive=timeJloff;

默认

open_ file_cache off;

配置块 httpserver location

说明 文件缓存会在存储3

 •  文件句、文、上次修改时间;

 •  已经打开过目录结构;

 •  没有找到的或者没有权操作文件信息

通过读取缓存减少了磁盘操作

3 个参数如下:

max 表示在存中存储元素最大个数 当达到最大限制时,采用L RU 算法从缓存中淘汰最近最少使用的元素

• inactive :表示在inactive 指定的时间没有被访问过的元素将会被淘汰默认时间为60

off 关闭缓存功能

例如

open_filecache_max=1000 inactive=20s

42 . 是否缰存打开文件时的错误信息

语法:open_file_cache_ errors onloff;

默认:open_file_cache_errors off;

配置块: http server location

说明:指定是否缓存打开文件时的错误信息

43. 不被淘汰的最小访问次数

语法:open_file_cache_min_uses number;

默认:open_file_cache_min_uses 1;

配置块: http serverlocation

说明:本数与open_file_ cache_ min_ uses 配合使用如果在inactive 指定的时间段内,访问次数超过了open _file_ cache_min_ uses 定的最小次数,那么将不会被淘汰出缓存

44. 检验缓存中元素高效率性的频率

语法:

open_file_cache_valid time;

默认

open_file_cache_valid 60;

配置块: http serverlocation

说明:默认每60 秒检查次缓存中的元素是否有效

45. 忽略不合法的HTTP 头部

语法:ignore_invalid_headers onloff;

默认ignore invalid headers on;

配置块: http server

说明: on 情况下,当出现不合法的HTTP 头部时, Nginx 会忽略此HTTP 头部; off ,情况下则会拒绝服务,并向用户发送400 (bad request )错误

46.HTTP 头部是否允许下划线

语法:underscores_in_headers onloff;

默认:underscores in headers off;

配置块 http serv er

说明 默认为o ff,表示头域名称不允许带下划线

47 . if_ Modified _ Since 头域处理策略

语法:if_Modified_Since[off | exact l before];

默认:if_mod_ified_since exact ;

配置块 http server location

说明 为了更好的性能,客户端览器会在客户端本缓存些文件 并保存当获取的时间,下次向服务器获缓存过的资源时,就携带I f-Modified-Since 头域,本指令根据参数决定如何处理

off If-Modified-Since 头域,每次都读取文件给客户端

exact 将头域时间和修改时间做精确比较,如果未匹配上, 读取文件返回给

用户; 果匹配上, 表示览器本为最新容,返回3 04 ( not modifi e d )给客户端,直接使缓存,节省带宽

before :比exact 更宽,只要文修改时间等于或早于日,Modified-Since 头部间,就客户端返回304 ( not modified

48 . 文件来找到时是否记录到error

语法:log_not_found onloff;

语法:log_not_found on;

配置块 http server location

说明:当理用户文请求时, 如果没找到文件是再记录到error. log ,一般用于调试定位 生产系统需要关掉

49. 合并相邻斜线

语法:

merge_slashes on l off;

默认

merge_slashed on;

配置块 http server location

说明 指明是否合并相邻的 ,例如,如果//test ///a . t x t on 会匹配为location /

test/ a. txt ;如果为off ,则不会匹配 URI 还是/test //la. txt

50. DNS 解析

语法resolver address …;

配置块 http server location

说明:设DNS 域名解析服务器地址例如:resolver 127.0.0.l 192.0.2.l;

51. DNS 解析超时时间

语法:resolver_timeout time;

默认resolver_timeout 30s;

配置块 http server location

说明 表示DNS 解析的超时时间

52. 返回错误页面时是否注明Nginx 版本

语法:server_token on l off;

默认:server_token on;

配置块 http server location

说明:表明处理出错的请求时,是否在应答头域的server 域内标明Nginx 版本,用于定位问题

53. upstream

语法:

upstream name{ ··· }

配置块: http

说明: upstream 块定义个上游服务器集群,用于反向代理中的proxy_pass 指令

例如:

upstream backend{

    server backendl.example.com;

    server backend2.example.com;

    server backend3.example.com;

}

server{

    location  {

        proxy_pass http://backend;

    }

}

54. 上游服务器名

语法

server name[parmamneters];

配置块 upstream

说明 server 配置项指定了一台上游服务器名可以是域名、IP 址、UNI X 句柄等

参数如下

weight = number 这台上游务器的权重,默1

max_fails = number fail timeout 配合使用,指在fail tim eo ut 时间段内,如果这台上游服务器转发失次数超过number 认为在fail_time_out 内该服务器不可用默认为10 表示不检查失次数

fail t imeout= time 表示该时间上游务器转发失败多少次后就认为该服务器暂时不可用 用于优化向代IO 这个超不是连接发送超时

down :表示该务器永久线,只在使用ip_ hash 配置项时才有用

backup 使ip_hash 无效表示该上游服务器仅是备份服务器,只有在所有非备份

务器都失效后,才会份服务器转发请求

upstrea m backend{

    server backendl.example.com weight=S;

    server 127.0.0.1 ma x fails=3 fail timeout = 30s;

    server unix: / tmp / backend3;

}

55 . 基于IP hash 算法

语法:ip_hash;

配置块 upstream

说明:在如有会话的Web 请求下,如Java PHP 的动态页面,希望个客户端的请求最好始终分配到固定台上游务器中,这样就可以保持会话,而不用在上游服务器中做会话ip_hash 就是解决这个,根据客户端IP Hash k ey, ~key upstream 集群中上游服务器数量模,然后取模后的结果把请求转发到对应的上游务器上,确保同个客户端的请求只转发到指定的上游服务器中ip_bashweight 配置不可同时使用upstream 中的台服务器暂时不可用,不能直接除该服务器配置 要使用down 标志 转发策略会混乱例如:

upstream backend{

    ip_hash;

    server backendl.example.com;

    server backend2.example.com;

    server backend3.example.com down;

    server backend4.example.com;

}

56. 转发当前代理

语法:proxy_pass URL;

配置块: location if

说明:这个配置将当前请求反向代理到URL 指定的服务器上, URL 可以是主机名或IP 地址+端口例如:proxy_pass:http://localhost:BOOO/uri/;也可以是UNIX 句柄:proxy_pass http://unix:/path/to/backend.socket:/uri/;也可以直接使用upstream 块:

upstream backend{

 …

}

server{

    location  {

    proxy pass http://backend;

    }

}

也可以把HTTP 转换成HTTPS:proxy pass https://10.12.0.1;

默认情况下,反向代理不会转发请求中Host 头部,如果需要转发,那么需加上配置项:proxy_set_header Host $host;

57. 转发使用的协议方法

语法:proxy_method method

配置块: http server location

说明 设置转发时的协议方法名例如:proxy_method POST;则客户端发来GET 请求在转发时方法名也会改为POST

58. 转发时隐藏的头域

语法:proxy_hide_header the_header;

配置块: http server location

说明: Nginx 会将上游服务器的响应转发给客户端,但默认不会转发以下头域一-Date Server X-Pad X-Accel-* 使用proxy_hide_ header 后,可以任意指定哪些头域不用转发例如:proxy_hide_header Cache-Control;proxy_hide_header MicrosoftOffieWebServer;

59. 转发时明确使用的头域

语法:proxy_pass_header the_header;

配置块 http server location

说明:与proxy_hide_header 功能相反,可以将原来禁止的头域进行转发

60 . 是否转发请求包体

语法:request_pass_request_body on | off;

默认:request_pass_request_body on;

配置块: http server location

说明:指定是否向上游服务器转发请求包体

61. 是否转发请求头

语法:proxy_pass_request_header on|off;

默认:proxy_pass_request_header on;

配置块: http server location

说明:确定是否向上游服务器转发请求包头

62. 重定向转发

语法proxy_redirect[default l off l redirect replacement];

默认:proxy_redirect default;

配置块: http server location

说明:当上游服务器返回的响应是重定向或刷新请求( 301302 )时, proxy_ redirect可以重设HTTP 头部的location refresh 宇段例如:proxy_redirect http://localhost:8000/two/ http://frontend/one/;则上游的location 段就被替换了,客户端的致性检查就可以通过.也可以使用ngx _http _ core_module 提供的变新的location 例如:proxy_redirect http://localhost:8000/ http://$host:$server_port/;也可以省略replacement 中的主机名,使用虚拟主机名称例如:proxy_redirect http://localhost:8000/two/ /one/;使用off 时,则不进行转换使用default 数时, 按照proxy_pass 配置项和所属的location 项重组发送给客户端的location 头部例如,下面两种配置效果样:

location /one/{

    proxy_pass http://upstrearn:port/two/;

    proxy redirect default;

}

location /one/{

    proxy_pass http://upstrearn:port/two/;

    proxy_pass http://upstrearn:port/two /one/;

}

63. 更换上游服务器

语法:proxy_next_upstrearn[error | timeout | invalid_header l http_500 | http_502 | 

http_503 | http_504 l http | 404 | off];

默认:proxy_next_upstrern error timeout;

配置块: http server location

说明:表示向上台上游服务器转发请求错误时,继续换台上游服务器处理这个请求因为上游服务器旦开始发送应答,反向代理服务器会立刻把应答包转发给客户端,所以,Nginx 开始向客户端发送响应包,之后的过程中若出现错误不允许换下一台上游服务器继续处理proxy_next_ upstream 的参数用来说明在哪些情况下会继续选择下一台上游服务器转发请求

可以使用的值和参数如下:

error :上游服务器出现错误

timeout :发送请求或读取响应发生超时

• invalid header :上游服务器发送的响应不合法

http_500 :上游服务器返回状态码是500

http_502 :上游服务器返回状态码是502

http_503 :上游服务器返回状态码是503

http_504 :上游服务器返回状态码是504 0

http_404 :上游服务器返回状态码是404

off:关闭这个功能

ngx_http_core_module 变量

ngx_http_ core_ module 模块提供了很多变,可以在配置日志格式或URI 中使用ngx_ http_ core_ module

参数意义
$arg PARAMETER

HTTP 求中某个参数的值,如/index . html?id=OO I ,可以使用$arg_i d 获取001 这个值

$args HTTP 请求中的完整参数字符串,上项中的$args id=001
$bmary_remote_ addr 进制的客户端地址
$body_ bytes_ sent

表示发送给客户端应答包体字节数

$contentlength客户端请求头中的Content-Length 头域值
$content_type 请求头中的Content-Type 字段
$cookie_COOKIE

请求头中的cookie 字段

$document_root当前请求使用的root 置选项( root 置指令的值)
$uri

表示当前请求的URI,不含参数部分

$document_uri$uri 含义相同
$request_uri表示请求的原始URI,包含完整参数本变量在重定向后也不变

$host

请求中的host 字段,只返回IP ,全部小写如果host 字段不存在,则使用实际处理的

sever (虚拟主机)替代$http_HEADER 取出的http_host 是原始的host 值, 不更改

$http_HEADER取出相应的请求头,如host $http_host ,头域名全部小
$hostname Nginx 所在主机名
$seat_http_HEADER

HTTP 应答头中相应的头域值,HEADER 全小写,如$sent_http host 是应答的host

$is_args

表示请求中的U是否带参数,如是带参数值为个问号),不带返回空字符串

$limit_rate

当前连接限速多少, 0 表示无限速

$nginx version当前Nginx 版本
$query_string请求URI中的参数,与$args 相同,但是$query_string 是只读的,不会改变
$remote_addr客户端地址
$ remote_port客户端地址
$remote_user使用AuthBasic Module 时定义的用户名
$request_ filename 请求中的URI 经过root alias 转换后的文件路径
$request_ body 请求的包体,只在proxy_pass fastcgi_pass 有意义
$request_ body_ file 请求包体临存储的文
$request_ completion请求全部处理完成, ok ,否则都是空字符串
$request_method

Hπp 请求的方法,如GETPUT

 

$schemaHTTP scheme ,如请求https://nginx.com 值是https
$server_addr 服务器地址
$server_name服务器名字
$server_port 服务器端口
$server_protocoI 服务器发送响应时协议,如HTTP/ 1.1 HTTP/ 1.0

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值