nginx指令

1.HTTP的核心模块.
这些HTTP模块会在编译Nginx时自动编译进来,除非使用configure命令禁止编译这些模块.
(1)alias指令.
该指令用于在URL和文件系统路径之间实现映射.它与root指令类似,但是网页文件的root根目录不会改变,改变的只是请求URL的文件系统路径.
语法:alias file-path| directory-path ;
例: location /i/{alias /spool/w3/images/;}
在示例中,访问URL地址"/i/top.gif",会返回文件"/spool/w3/images/top.gif"
(2)client_body_in_file_only 指令.
语法:client_body_in_file_only on|off
该指令允许将一个客户端的请求内容记录到一个文件中,该文件在请求完成后不会被删除.在内置perl中,该指令可以用于调试$r->request_body_file 方法.
(3)client_body_in_single_buffer 指令
语法:client_body_in_single_buffer
该指令指定是否保持整个内容在一个单一的客户端请求缓冲区中,该指令在使用变量$request_body时被推荐使用.
(4)client_body_buffer_size指令
语法:client_body_buffer_size the_size
例 client_body_buffer_size 128k
该指令指定客户端请求内容的缓冲区大小.如果客户端请求内容大于缓冲区,整个请求内容或部分请求内容将被写人临时文件.缓冲区默认大小相当于网页大小的两倍,为8k 或16k.
(5)client_body_temp_path指令
语法: client_body_temp_path dir-path [level1[level2[level3]
该指令用于指定存放请求内容临时文件的目录.缓存目录最多支持3层子目录.
例: client_body_temp_path /spool/nginx/client_temp 1 2 ;
以上示例的目录结构类似:
/spool/nginx/client_temp/7/45/XXXXX
(6)client_body_timeout指令
语法:client_body_timeout time
该指令用于设置读取客户端请求内容的超时时间.如果超过该指令设置的时间,Nginx将返回"Request time out"错误信息(HTTP状态码为408)
(7)client_header_buffer_size指令
语法:client_header_buffer_size size
该指令用于设置客户端请求的Header头缓冲区大小.对绝大多数请求来说,1KB大小的Header头缓冲区已经足够,但是对于Cookie内容较大的请求来说,可能不够用.
(8)client_header_timeout指令.
语法:client_header_timeout time
该指令用于设置读取客户端请求Header头信息的超时时间,如果超过该指令设置的时间,Nginx将返回"Request time out "错误信息(HTTP状态码为408)
(9)client_max_body_size指令
语法:client_max_body_size size
例: client_max_body_size 300m
该指令用于设置允许接受的客户端请求内容的最大值,即客户端请求Header头信息中设置的Content-Length的最大值.如果超过该指令设置的最大值.Nginx将返回"Request Entity Too Large"错误信息(HTTP状态码为413).当默认值为1MB时,如果Nginx服务器提供上传1MB以上的大文件等操作,则要加大该值.
(10)default_type指令
语法:default_type MIME-type
MIME-type是用来告诉浏览器请求的文件媒体类型,例如:MIME-type名text/plain表示该文件为文本文件,text/html表示该文件为HTML网页文件.如果Nginx无法识别该文件属于何种MIME-type类型,则该文件标记为default_type指令设置的MIME-type
(11)error_page code[code...][=|=answer-code] uri
该指令用于设置如果出现指定的HTTP错误状态码,则返回给客户端显示的对应的URI地址.
例: error_page 404 /404.html ;
(12)index指令
语法: index file [file...]
该指令用于设置Nginx的默认首页文件.
index index.$geo.html index.0.html /index.html
(13)internal指令
该指令用于设置某个location路径只能在Nginx内部使用,外部无法访问.
location /404.html {internal;}
(14)keepalive_timeout [time]指令
该指令可使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keep-alive功能可避免建立或重新建立连接.市场上大部分Web服务器,包括IIS,Apache,Nginx,Lighttpd都支持HTTP keep-alive.对于提供静态内容的网站来说,这个功能有用,对于负担重的网站,就比较吃力了.
(15)keepalive_requests指令
语法:keepalive_requests n
设置一个keep-alive连接使用的次数.一次请求结束后,如果该连接使用的次数没有超过keepalive_requests指令设置的请求次数,则服务器并不立即主动断开连接,而是直到达到keepalive_timeout指令设置的时间,才关闭连接.
(16)large_client_header_buffers 指令
该指令用于设置客户端请求的Header头缓冲区大小,默认值为4KB.客户端请求行不能超过large_client_header_buffers指令设置的值.客户端请求的Header头信息不能大于large_client_header_buffers指令设置的缓冲区大小,否则会报414或400错误,如果客户端的Cookie信息较大,则须增加缓冲区大小.
(17)limit_except
该指令用于限制HTTP方法访问location中的内容
例: limit_except GET{
  allow 192.168.1.0/32 ;
  deny all ;
}
(18)limit_rate 指令
语法:limit_rate speed
该指令主要用来限速,限速单位是"字节数/秒",一般在提供HTTP下载等应用中会用到该指令.限速只对一个连接起效,如果客户端开启两个连接下载,下载的速度将是限速值的两倍
例1:限制每个连接的下载速度为100KB/秒
limit_rate 100k ;
例2:在特定条件下开启限速功能
server {
  if($slow)
  {
    set $limit_rate 4k ;
  }
}
(19)limit_rate_after指令
语法:limit_rate_after time
该指令可以设置一个字节数(1MB),下载的字节数大于该值后,limit_rate指令的限速功能将起效.对于MP3在线播放,HTTP方式的Flash FLV视频点播等应用,使用该指令将会起到不错的效果.
例:下载的文件字节数超过1MB后,限速为100kb/秒
limit_rate_after 1m ;
limit_rate 100k ;

(20)listen指令
该指令用于设置虚拟主机监听的服务器地址和端口号,你可以同时设置服务器地址和端口号,也可以指定一个IP地址,或者一个端口号,或者一个服务器名.如果listen指令只设置一个服务器名或IP地址,那么它的默认端口号为80.

(21)location指令
该指令对不同的URI进行不同的配置,既可以使用字符串,也可以使用正则表达式,使用正则表达式,须使用以下前缀.
1)~*,表示不区分大小写的匹配.
2)~,表示区分大小写的匹配.

(22)log_not_found指令
语法:log_not_found [on|off]
该指令用来启用或禁用404错误日志,这个指令可以用来禁止Nginx记录找不到robots.txt和favicon.ico这类文件的错误信息.

(23)log_subrequest指令
语法:log_subrequest [on|off]
该指令用来启动或禁止access_log中记录类似rewrite rules , SSI request等子请求.

(24)root指令
该指令主要用于指定请求的文档根目录.例如,配置内容为location/i/{root /spool/w3;}时,请求URI地址"/i/top.gif"将返回文件"/spool/w3/i/top.gif"的内容给客户端.

2.HTTP核心模块中可以使用的变量.
NginxHTTP核心模块支持一些与Apache变量名称相同的内置变量,例如:$http_user_agent,$http_cookie ,此外还支持一些Nginx特有的其他变量.

$arg_PARAMETER:该变量包含了当查询字符串时,GET请求可变参数的值.
$args:这个变量等于请求行中的参数.
$binary_remote_addr:二进制格式的客户端地址.
$content_length:这个变量等于客户端请求头中的content-length值.
$content_type:这个变量等于客户端请求头中的content-type值.
$cookie_COOKIE:客户端请求Header头中的cookie变量.前缀"$cookie_"加上cookie名称的变量,该变量的值即为cookie名称的值.
$document_root:这个变量等于当前请求所属的root指令设置的文档根目录路径.
$limist_rate:这个变量允许限制连接速率.
$remote_addr:客户端的IP地址.
$remote_port:客户端的端口.

3.HTTP Access模块
HTTP Access模块提供了一个简单的基于host名称的访问控制.通过该模块,可以允许或禁止指定的IP地址或IP段访问某些虚拟主机或目录.
例:
location /{
  deny 192.168.1.1 ;
  allow 192.168.1.0/24;
  allow 10.1.1.0/16 ;
  deny all ;
}

4.HTTP Auth Basic模块
该模块采用基于HTTP基本身份验证的用户名和密码登录方式,来保护你的虚拟主机或目录location /{
  auth_basic "Restricted";
  auth_basic_user_file htpasswd ;
}
auth_basic:用于指定弹出的用户名和密码登录框中提示的名称.
auth_basic_user_file指令:用于设置htpasswd密码文件的名称.

5.HTTP Browser模块
该模块可以根据客户端"User-agent"请求头中的信息创建变量.
$modern_browser:如果浏览器被识别为新浏览器,则等于modern_browser_value指令设置的值.
$ancient_browser:如果浏览器被识别为旧浏览器,则等于ancient_browser_value指令设置的值.
$msie:如果浏览器被鉴定为MSIE浏览器,该变量的值为1.

6.HTTP Charset模块
该模块用来添加文本编码类型到HTTP应答头"Content-Type indicated".此外,该模块还能够将服务器端网页原来的文本编码转换成另一种文本编码,输出给客户端.
例如:
charset windows-1251
source_charset koi8-r
charset指令用于添加文本编码类型到HTTP应答头"Content-Type indicated" .如果编码与source_charset指令设置的编码不一样,将进行重编码.参数为"off".

override_charset on|off
当该指令开启时,如果后端的FASTCGI服务器响应头带有"Content-Type"头信息,将开启编码转换.

7.HTTP Empty Gif模块
该指令可以保持一个1X1像素的透明GIF图片在内存中,当请求该图片时,能够得到非常快得响应速度.
例:location = /_.gif{ empty_gif;}

8.geo模块
geo模块主要用于做全局负载均衡,可以根据不同的客户端IP访问到不同的服务器.一些针对不同地区的客户,使用不同的服务器去处理的需求,可以使用geo模块.
配置如下:
geo $geo{
  default 0 ;
  include conf/geo.conf ;
  127.0.0.1/32 2 ;
  127.0.0.0/24 ru ;
  192.168.1.0/24 1 ;
  10.1.0.0/16  1 ;
}
defalut:任何IP地址,相当于0.0.0.0/0
include:可以引用一个文本文件,里面包含geo的配置内容.

9.Gzip模块
Gzip模块主要用于对返回给客户端的网友采用gzip进行压缩输出.
目前90%的浏览器都支持gzip和deflate两种压缩格式.如果浏览器支持gzip压缩,就会在HTTP请求头中发送一行"Accept-Encoding:gzip,deflate",这时候Nginx服务器可以输出经过gzip压缩后的页面给浏览器,浏览器再解压.这种方式可以将网络线路上传输的大量数据消减60%以上,不仅节省了服务器带宽,同时加速了用户的下载速度和体验.
(1)gzip指令.
gzip on|off 该指令用于开启或关闭gzip模块
(2)gzip_buffers指令
gzip_buffers 4 4k/8k
设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流,例如4 4k代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存.如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果.
(3)gzip_comp_level指令
gzip 压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
(4)gzip_min_length指令
gzip_min_length length
设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length 中进行获取,默认值是0,不管页面多大都压缩,建议设置成大于1k的字节数,小于1k可能会越压越大.
(5)gzip_http_version指令
gzip_http_version 1.0|1.1
识别http的协议版本.由于早期的一些浏览器或http客户端,可能不支持gzip自解压,用户会看到乱码,所以做一些判断还是很有必要的.
(6)gzip_proxied指令
Nginx作为反向代理的时候启用,开启或关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含Via的header头.
(7)gzip_types指令
语法:gzip_types mime-type[mime-type...]
匹配mime类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的.

10.HTTP Headers模块
这组指令主要用来设置Nginx返回网页内容给用户时,附件的Header头信息.
(1)add_header指令
当HTTP应答状态码为200,204,301,302,或304时,增加指定的Header头,其中Header头的值可以使用变量.
(2)expires指令
使用本指令可以控制HTTP应答中的"Expires"和"Cache-Control"的Header头信息,起到控制浏览器页面缓存的作用.
语法:expires [time|epoch|max|off]

11.HTTP Index模块
该模块可以用于指定虚拟主机目录下的默认首页文件名称.如果指定了多个文件,那么将按照从左到右的顺序逐个查找.可以在列表末尾加上一个绝对路径名的文件.

12.HTTP Referer模块
当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理,例如防盗链.因为HTTP Referer头信息是可以通过程序来伪装生成的.所以通过Referer防盗链并非100%可靠.

13.HTTP Limit Zone模块
该模块用于针对条件,进行会话的并发连接数控制,例如限制每个IP的并发连接数.
limit_zone one $binary_remote_addr 10m ;
在以上示例中,定义一个叫"one"的记录区,总容量为10MB,以容量$binary_remote_addr作为会话的判断基准(即一个地址一个会话)
语法: limit_conn zone_name max_clients_per_ip
该指令用于指定一个会话最大的并发连接数.当超过指定的最大并发连接数时,服务器将返回503.

14.HTTP Limit Req模块
该模块允许你对Session会话,单个客户端IP地址,限制指定单位时间内的并发请求数.你可以在一定程度上减轻多应用服务器的DOS恶意攻击.

15.HTTP Log模块
(1)access_log指令.该指令用于设置日志文件的路径,格式和缓冲区大小.使用"off"作为唯一参数,将不记录日志文件.如果没有指定日志格式,将默认采用"combined"格式.缓冲区的大小必须小于写人磁盘文件的原子记录大小.
(2)log_format指令.该指令用来描述日志格式.在日志的格式中,可以使用Nginx的大多数通用变量,以及一些仅在写日志时存在的变量.

16.HTTP Map 模块
该模块允许分类,或者映射一组值到一组不同的值,并将这些值存储在一个变量中.
例:
map $http_host $name{
  hostnames ;
  default 0 ;
  example.com 1 ;
  *.example.com 1 ;
  test.com 2 ;
  *.test.com 2 ;
  .site.com 3 ;
}

17.HTTP Memcached模块
Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态,数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon)是用C写的.但是客户端可以用任何语言来编写,并通过Memcached协议与守护进程通信,且它并不提供冗余.当某个服务器停止运行或崩溃了,所有存放在该服务器上的键/值对都将丢失.Memcached(官方网站:http://www.memcached.org/)由Danga Interactive开发,用于提升LiveJournal.com访问速度.LJ每秒动态页面访问量几千次,用户700万.Memcached将数据库负载大幅降低,以便更好地分配资源,更快地访问.

18.HTTP Proxy模块
该模块用于转发请求到其他的服务器.keep-alive是指在HTTP/1.1协议中,同一个连接中发出和接收多次HTTP请求,节省了创建TCP连接过程的时间开销.而HTTP/1.0协议不具备keep-alive请求的能力.因此,在HTTP/1.0协议中,每一个到后端的请求都会创建一个连接,传输完成后会删除这个连接.Nginx采用HTTP/1.1协议与浏览器进行通信,采用HTTP/1.0协议与后端服务器进行通信.
proxy_cache相关指令集
1)proxy_cache
2)proxy_cache_path
3)paroxy_cache_methods
4)proxy_cache_min_uses
5)proxy_cache_valid
6)proxy_cache_use_stale

14.HTTP SSI 模块
SSI,通常称为服务器嵌入.SSI的工作原理:将内容发送到浏览器之前,可以使用"服务器端包含(SSI)"指令将文本,图形或应用程序信息包含到网页中.例如可以使用SSI包含时间/日期戳,版权声明或供客户填写并返回的表单.对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法.将内容存入一个包含文件中即可,而不必将内容输入所有文件。

15.HTTP Userid模块.
该模块相当于Apache的mod_uid模块,主要用于做客户端的身份标识.它主要使用$uid_got和$uid_set变量.

时间: 2024-10-09 16:16:44

nginx指令的相关文章

nginx指令之rewrite

语法:rewrite  regex replacement flag 默认值:none 使用环境:server,locacation,if 该指令根据表达式来重定向URL,或者修改字符串.指令根据配置文件中的顺序来执行. 注意:重写表达式只对相对路径有效.如果你想配对主机名,你应该使用if语句,代码如下: if ($host ~* www\.(.*)) {     set    $host_without_www $1;     rewrite ^(.*)$  permanent;  } 如果替

nginx指令中的优化(配置文件)

nginx指令中的优化(配置文件)worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu.worker_rlimit_nofile 102400; 这个指令是指当一个

Nginx 指令之location

Nginx 指令之location 指令: 语法规则: `location [=|~|~*|^~] /uri/ { - }`` 规则解释: = 表示精确匹配 ^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可. ~ 表示区分大小写的正则匹配 ~* 表示不区分大小写的正则匹配 !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到. @ 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files n

Nginx指令概述

指令概述 配置指令是一个字符串,可以用单引号或者双引号括起来,也可以不括.但是如果配置指令包含空格,一定要引起来. 指令参数 指令的参数使用一个或者多个空格或者TAB字符与指令分开.指令的参数有一个或者多个TOKEN串组成.TOKEN串之间由空格或者TAB键分隔. TOKEN串分为简单字符串或者是复合配置块.复合配置块即是由大括号括起来的一堆内容.一个复合配置块中可能包含若干其他的配置指令. 如果一个配置指令的参数全部由简单字符串构成,也就是不包含复合配置块,那么我们就说这个配置指令是一个简单配

nginx 指令之 try_files

Nginx的配置语法灵活,可控制度非常高.在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率. try_files指令说明 try_files指令语法:try_files file ... uri 或 try_files file ... = code默认值:无作用域:server location 其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹

Nginx 的配置指令

我们已经了解了 Nginx 的基本命令和架构原理,下面该到最让人头疼也是最不容易理解的部分了,那就是 nginx.conf 这个配置文件,下面从 Nginx 的指令开始,一步步来讲解 Nginx 的配置. Nginx 指令 先来看一个典型的 Nginx 配置文件示例. main http { upstream { - } split_clients {-} map {-} geo {-} server { if () {-} location { limit_except {-} } locat

nginx配置文件

nginx config解析 /usr/local/nginx/conf/conf.conf user nobody worker_process 4;#四个进程 events{  worker_connection 1024; } http{  upstram mypro{   ip_hash;#代表同一个用户所有操作都在同一台服务器   server ip1:port weight=2;   server ip2:port;#默认weight=1  }  #监听端口,负载访问地址  serv

Nginx 工作原理和优化、漏洞

1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作. Nginx的模块从结构上分为核心模块.基础模块和第三方模块: 核心模块:HTTP模块.EVENT模块和MAIL模块 基础模块:HTTP Access模块.HTTP F

Nginx工作原理和优化、漏洞(转)

查看安装了哪些模块命令: [[email protected] xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/opt/xcache/nginx --with-ipv6 --with-http_ssl_module --with