HTTP核心模块(HTTP Core)


alias

语法:alias file-path|directory-path;
默认值:no
使用字段:location
这个指令指定一个路径使用某个某个,注意它可能类似于root,但是document root没有改变,请求只是使用了别名目录的文件

location /i/ {  
    alias /spool/w3/images/;  
}

上个例子总,请求"/i/top.gif"将返回这个文件: "/spool/w3/images/top.gif"。
Alias同样可以用于带正则表达式的location,如:

location ~ ^/download/(.*)$ {  
    alias /home/website/files/$1;  
}

请求"/download/book.pdf"将返回"/home/website/files/book.pdf"。
同样,也可以在别名目录字段中使用变量。

client_body_buffer_size
语法:client_body_buffer_size the_size
默认值:8k/16k
使用字段:http, server, location
这个指令可以指定连接请求实体的缓冲区大小。
如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
默认值为两个内存分页大小值,根据平台的不同,可能是8k或16k。

client_body_temp_path
语法:client_body_temp_path dir-path [ level1 [ level2 [ level3 ]
默认值:client_body_temp
使用字段:http, server, location
指令指定连接请求实体试图写入的临时文件路径。
可以指定三级目录结构,如:

client_body_temp_path /spool/nginx/client_temp 1 2;

那么它的目录结构可能是这样:

/spool/nginx/client_temp/7/45/00000123457

client_body_timeout
语法:client_body_timeout time
默认值:60
使用字段:http, server, location
指令指定读取请求实体的超时时间。
这里的超时是指一个请求实体没有进入读取步骤,如果连接超过这个时间而客户端没有任何响应,Nginx将返回一个"Request time out" (408)错误

client_header_buffer_size
语法:client_header_buffer_size size
默认值:1k
使用字段:http, server
指令指定客户端请求头部的缓冲区大小
绝大多数情况下一个请求头不会大于1k
不过如果有来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在large_client_header_buffers里面设置。

client_max_body_size
语法:client_max_body_size size
默认值:client_max_body_size 1m
使用字段:http, server, location
指令指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段。
如果请求大于指定的值,客户端将收到一个"Request Entity Too Large" (413)错误。
记住,浏览器并不知道怎样显示这个错误。

default_type
语法: default_type MIME-type
默认值:default_type text/plain
使用字段:http, server, location
某个文件在标准MIME视图没有指定的情况下的默认MIME类型。
参考types。

location = /proxy.pac {  
default_type application/x-ns-proxy-autoconfig;  
}  
location = /wpad.dat {  
rewrite . /proxy.pac;  
default_type application/x-ns-proxy-autoconfig;  
}

directio
语法:directio [size|off]
默认值:directio off
使用字段:http, server, location
这个参数指定在读取文件大小大于指定值的文件时使用O_DIRECT(FreeBSD, Linux),F_NOCACHE(Mac OS X)或者调用directio()函数(Solaris),当一个请求用到这个参数时会禁用sendfile,通常这个参数用于大文件。

directio 4m;

error_page
语法:error_page code [ code... ] [ = | =answer-code ] uri | @named_location
默认值:no
使用字段:http, server, location, location 中的if字段
这个参数可以为错误代码指定相应的错误页面

error_page 404 /404.html;  
error_page 502 503 504 /50x.html;  
error_page 403 http://example.com/forbidden.html;  
error_page 404 = @fetch;

同样,你也可以修改返回的错误代码:

error_page 404 =200 /.empty.gif;

如果一个错误的响应经过代理或者FastCGI服务器并且这个服务器可以返回不同的响应码,如200, 302, 401或404,那么可以指定响应码返回:

error_page 404 = /404.php;

如果在重定向时不需要改变URI,可以将错误页面重定向到一个命名的location字段中:

location / (  
error_page 404 = @fallback;  
)  

location @fallback (  
proxy_pass http://backend;  
)

if_modified_since
语法:if_modified_since [off|exact|before]
默认值:if_modified_since exact
使用字段:http, server, location
指令(0.7.24)定义如何将文件最后修改时间与请求头中的"If-Modified-Since"时间相比较。
·off :不检查请求头中的"If-Modified-Since"(0.7.34)。
·exact:精确匹配
·before:文件修改时间应小于请求头中的"If-Modified-Since"时间

internal
语法:internal
默认值:no
使用字段: location
internal指令指定某个location只能被“内部的”请求调用,外部的调用请求会返回"Not found" (404)
“内部的”是指下列类型:
·指令error_page重定向的请求。
·ngx_http_ssi_module模块中使用include virtual指令创建的某些子请求。
·ngx_http_rewrite_module模块中使用rewrite指令修改的请求。
一个防止错误页面被用户直接访问的例子:

error_page 404 /404.html;  
location /404.html {  
internal;  
}

location
语法:location [=|~|~|^~|@] /uri/ { ... }
默认值:no
使用字段:server
这个参数根据URI的不同需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用正则表达式,你必须指定下列前缀:
1、~
不区分大小写。
2、~ 区分大小写。
要确定该指令匹配特定的查询,程序将首先对字符串进行匹配,字符串匹配将作为查询的开始,最确切的匹配将被使用。然后,正则表达式的匹配查询开始,匹配查询的第一个正则表达式找到后会停止搜索,如果没有找到正则表达式,将使用字符串的搜索结果。
在一些操作系统,如Mac OS X和Cygwin,字符串将通过不区分大小写的方式完成匹配(0.7.7),但是,比较仅限于单字节的语言环境。
正则表达式可以包含捕获(0.7.40),并用于其它指令中。
可以使用“^~”标记禁止在字符串匹配后检查正则表达式,如果最确切的匹配location有这个标记,那么正则表达式不会被检查。
使用“=”标记可以在URI和location之间定义精确的匹配,在精确匹配完成后并不进行额外的搜索,例如有请求“/”发生,则可以使用“location = /”来加速这个处理。
即使没有“=”和“^~”标记,精确的匹配location在找到后同样会停止查询。
下面是各种查询方式的总结:
1、前缀“=”表示精确匹配查询,如果找到,立即停止查询。
2、指令仍然使用标准字符串,如果匹配使用“^~”前缀,停止查询。
3、正则表达式按照他们在配置文件中定义的顺序。
4、如果第三条产生一个匹配,这个匹配将被使用,否则将使用第二条的匹配。
例:

location = / {  
# 只匹配 / 的查询.  
[ configuration A ]  
}  
location / {  
# 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。  
[ configuration B ]  
}  
location ^~ /images/ {  
# 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。  
[ configuration C ]  
}  
location ~* \\.(gif|jpg|jpeg)$ {  
# 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处理。  
[ configuration D ]  
}

各请求的处理如下例:
·/ -> configuration A
·/documents/document.html -> configuration B
·/images/1.gif -> configuration C
·/documents/1.jpg -> configuration D
注意你可以以任何顺序定义这4个配置并且匹配结果是相同的,但当使用嵌套的location结构时可能会将配置文件变的复杂并且产生一些比较意外的结果。
标记“@”指定一个命名的location,这种location并不会在正常请求中执行,它们仅使用在内部重定向请求中。(查看error_page和try_files)

root
语法:root path
默认值:root html
使用字段:http, server, location ,location中的if字段
请求到达后的文件根目录。
下例中:

location /i/ {
root /spool/w3;
}

如果请求"/i/top.gif"文件,nginx将转到"/spool/w3/i/top.gif"文件。你可以在参数中使用变量。
注意:在请求中root会添加这个location到它的值后面,即"/i/top.gif"并不会请求"/spool/w3/top.gif"文件,如果要实现上述类似于apache alias的功能,可以使用alias指令。


原文链接:https://www.cnblogs.com/kerwing/p/8309846.html