[ngx_http_core_module][1]
[variables][2]
## 配置框架
~~~
http {
upstream {
.,..
}
server {
listen IP:PORT;
# 虚拟主机
location /URL {
if ...{
...
}
root "/path/to/somewhere";
...
}
}
server {
,,.
}
}
~~~
## 虚拟主机相关的配置
>[success]server {}
定义一个虚拟主机;
>[success]server_tokens
默认值:on
在错误页面或是响应报文头中是否显示Nginx**版本号**
>[success]listen address[:port] [default_server] [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size];
监听的端口
backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置;
rcvbuf=size:设定监听句柄的SO_RCVBUF参数;
>[success]server_name name [...];
后可跟多个主机名;名称还可以使用通配符和正则表达式(~);
(1) 先做精确匹配;www.magedu.com:
(2) 左侧通配符匹配,例如:*.magedu.com;
(3) 右侧通配符匹配,例如:www.*;
(4) 正则表达式匹配,例如: ~ ^.*\.magedu\.com$
(5) default_server
>[success]location [=|~|~*|^~] /uri {...}
location @name
允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;
~~~
=: 精确匹配检查;
^~:URI的前半部分匹配,不检查正则表达式;不包含后面的参数
~: 正则表达式模式匹配,区分字符大小写;
~*:正则表达式模式 匹配,不区分字符大小写;
~~~
匹配优先级:精确匹配(=)、^~、~和~*、由不带符号的URL进行左侧匹配;
![](http://om4h63cja.bkt.clouddn.com/17-7-27/26487097.jpg)
>[success]root
设置web资源路径映射;用于指明请求的URL所对应的文档的根目录路径;
~~~
location /images/ {
root "/web/imgs/";
}
~~~
www.example.com/images/ => www.example.com/web/imgs/images/
>[success]alias path
用于location配置段,定义路径别名
~~~
location /images/ {
alias /www/pictures/;
}
location ~ /images/(.*)$ {
alias /www/pictures/$1;
}
~~~
www.example.com/images/ => www.example.com/www/pictures/
注意:root表示指明路径为对应location的“ /” URL;alias表示路径映射,即location中的URL是相对于alias所指明的路径而言;
>[success]index file
默认主页面
>[success]error_page code [...] [=code] URI | @name
根据http状态码重定向错误页面
~~~
error_page 404 /404.html
~~~
=[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;
>[success]try_files path1[,path2,...] URI
按顺序检测文件的存在性,返回第一个存在的文件;最后最后一个必须存在,否则导致Nginx内部错误
~~~
location / {
try_files $uri $uri/ =404;
}
~~~
这里指定状态码作为最后一个参数。
---
## 网络连接相关的配置
>[success]keepalive_timeout time [time];
保持连接的超时时长,默认为65s;
第二个time是返回头的Keep-Alive;
>[success]keepalive_requests #;
在一次保持连接上允许承载最大资源请求数;超过这个数量,连接将被关闭。
>[success]keepalive_disable [msie6|safari|none]
为指定类型的浏览器禁用长连接;
>[success]tcp_nodelay on|off
默认值: on
仅在长连接时生效;
当请求的资源很小,可以将多个资源合并发送(tcp_nodelay off),减少服务器开销,但是用户体验会有延迟。
>[success]tcp_nopush on|off
默认值: off
仅在使用sendfile时生效,Nginx将会尝试在单个报文中发送整个HTTP响应头,
>[success]client_header_timeout time;
读取http请求报文首部的超时时长;
>[success]client_body_timeout time;
默认值:60s
读取http请求报文body部分的超时时长;
>[success]send_timeout time;
默认值:60s
发送响应报文的超时时长;两个读操作之间的超时时间,如果在这个时间内没有进行任何操作,Nginx将关闭连接
>[success]resolver
设置DNS服务器
>[success]resolver_timeout
默认值:30s
域名查询超时时间
## 对客户端请求进行限制
>[success]limit_except METHOD {...}
指定对范围之外的其它方法的访问控制;
~~~
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
~~~
>[success]client_body_max_size SIZE;
限制请求报文中body部分的上限;通过检测请求报文首部中的"Content_Length"来判定;
>[success]limit_rate speed;
限制客户端每秒种传输的字节数,默认为0,表示无限制;
>[success]satisfy
默认值:all
all表示所有都有效
any 至少有一个有效
## 对内存或磁盘资源进行分配
>[success]client_body_in_file_only on|clean|off;
请求报文的body部分是否可暂存于磁盘;on表示允许,并且即使请求结束,也不会删除暂存的内容;clean表示会删除;off不允许暂存;
>[success]client_body_in_single_buffer on|off
将客户端请求保存在单个请求缓存中,当超出单个请求缓存的大小,仍会存在磁盘上。
>[success]client_body_buffer_size size;
默认值: 8k/16k
单个请求缓存的大小
>[success]client_body_temp_path DIR [level1 [level2 [level3 [level4]]]]
例如:client_body_temp_path /var/tmp/nginx/client 1 2 --> /var/tmp/nginx/client/1/22/1637182361782368
>[success]client_header_buffer_size size:
默认值: 1k
## 文件操作优化相关的配置
>[success]sendfile on|off;
>[success]aio on|off;
>[success]directio size|off;
是否使用O_DIRECT选项去请求读取文件;与sendfile功能互斥;
>[success]open_file_cache max=N [inactive=time] | off;
默认值: off
nginx可以缓存以下三种信息:
(1) 文件句柄、文件大小和最近一次修改时间;
(2) 打开目录的目录结构;
(3) 没有找到的或者没有权限操作的文件的相关信息;
max=N表示可缓存的最大条目上限;一旦到达上限,则会使用LRU从缓存中删除最近最少使用的条目;
inactive=time: 在inactive指定的时长内没有被访问过的缓存条目就会淘汰;
>[success]open_file_cache_errors on|off;
默认值: off
是否缓存在文件缓存中缓存打开文件时出现找不到路径,没有权限等的错误信息;
>[success]open_file_cache_min_uses number;
默认值: 1
在指定时间内一个文件被访问的最少次数,如果大于这个值,文件描述符将被缓存。
>[success]internal
默认值:no
如果一个locationkaiqle这个值,那么这个location只能由**内部**访问,外部访问将返回404错误
* 由error_page重定向
* 由rewrite模块重定向
示例表示不能直接访问404错误页面。
~~~
location ~ /404.html {
internal;
}
error_page 404 /404.html;
~~~
>[success]log_subrequest
默认值:off
在访问日志中是否记录子请求,子请求来自重写或者SSI
[1]:http://nginx.org/en/docs/http/ngx_http_core_module.html
[2]:http://nginx.org/en/docs/http/ngx_http_core_module.html#variables
- nginx的功能
- nginx常用变量
- Nginx内核模块
- Nginx的事件模块
- Nginx的HTTP模块
- Nginx的fastcgi
- nginx的proxy
- Upstream实现后台服务器集群
- 文件操作优化相关的配置
- Nginx模块管理和进程管理
- 模块管理
- 进程管理
- 针对Nginx的Linux系统优化
- Nginx如何处理一个请求
- nginx状态信息
- Nginx工具
- Nginx限制流量
- Nginx限制用户的并发连接数
- 配置FLV服务器
- Nginx访问控制
- Nginx自动索引
- Nginx网页压缩传输
- 控制Nginx如何记录日志
- Nginx改写响应
- Nginx重写
- 后台Nginx记录原始原始IP
- Nginx防盗链
- Nginx的https