合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[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