nginx常用模块

  •  rewrite模块
1.url重写由rewrite指令来执行,该指令接受一个模式(正则表达式),后跟一个替换url。
2.rewrite中的匹配使用的正则表达式pcre库
^   : 匹配开始
$    : 匹配结束
 .    : 匹配任何字符
[^]  : 否定组
|       :  或
() :分组
\     : 转义字符
*:匹配*之前的字符必须匹配指定 0或多次
+:匹配+之前的字符必须匹配指定 1次或多次
?:匹配?之前的字符必须匹配指定 0次或1次
{x}:匹配{}之前的字符必须匹配指定的x次数
{x,} : 匹配{ ,}之前的字符必须匹配指定的至少x次
{x,y} :匹配{ ,}之前的字符必须匹配指定的x到y次
注意:正则表达式的元字符“{”和“}”可能会和nginx配置文件中区段定界符“{ }”有冲突。因此,如果想写一个包括花括号的正则表达式,
需要将模式放在引号之间(单引号或双引号)
location:
=:精确匹配,不能使用正则表达式。
无:url的定位必须以指定模式开始,不可以使用正则表达式。
~:客户端请求的url与指定的正则表达式匹配必须区分大小写
~*:对客户端请求的url与指定的正则表达式匹配,必须不区分大小写。
^~:类似于无标志行为,url的定位必须以指定模式开始。不同的是,如果模式匹配,那么nginx就停止搜索其他模式
@:定义命名location区段,这些区段客户端不能够访问,只可以有内部产生的请求来访问,例如,try_files 和error_page。
在location 模块中添加
internal;
只能被内部请求访问。

      指令:
  rewrite模块提供了一组指令,这些指令不只是重写url。下列描述的这些指令根据使用环境情况来使用。
1.语法:rewrite regexp replacement [flag];
flag可以取下面的值。
last:当前重写规则应该是最后应用。
break:当前的重写规则被应用,但是对于被修改的urlnginx不会初始化新的请求。
2.语法:return code
中断请求处理过程,并且返回一个指定的http状态代码。
3.语法:set $variable  value;
初始化或重定义一个变量。注意,有些变量是不可以被重定义的,例如,不能修改$uri.
4.uninitialized variable_warn   语法:on或off
如果设置为on,那么在所用配置文件中有变量未被初始化的时候,nginx会发出消息记录。
5.rewrite_log    语法:on或off
如果设置为on,nginx将在notice错误级别日志对rewrite引擎处理的每一个操作发出日志消息。

  • log模块
该模块用于控制nginx访问日志的行为。
语法:access_log  path 【format [ buffer=size]】 | off
该指令定义了访问日志文件的路径,访问日志条目的格式。
语法: log_format template_name format_string;
定义一个模板,用于描述访问日志中一个条目包含的内容。改模版有access_log指令使用。
语法:open_log_file_cache max=X [inactive=time]  [min_uses=N] [valid=time] | off;
为日志文件描述符配置缓存。

- auth_basic模块
用户认证
location      /admin/ {
                  auth_basic "admin control panel";
                   auth_basic_user_file access/password_file;
            }
第一个指令是auth_basic,他可以设置为off,或设置为文本消息,通常简称为“认证请求”
第二个指令是auth_basic_user_file,定义密码文件的相对路径。

  • Access模块
该模块带来了两个重要的指令:allow和deny。他们允许你通过指定ip或ip范围来允许或拒绝被访问的资源。
两个指令有同样的语法:allow ip| cidr|all,这里的ip就是ip地址,cidr是一个ip范围(cidr语法),all表示所有
客户端的ip。
location {
              allow   127.0.0.1;  #允许本地ip访问
    }
注意:规则的处理顺序为自上而下。

  • real ip模块
通过在X-Real-IP HTTP头中指定的IP来代替客户端的IP地址,第一步是插入real_ip_header指令来定义被利用的
HTTP头--X-Real-IP 或 X-Forwarded-For;第二步定义被信任的IP地址,换句话说,就是被允许使用这些头的客户端。set_real_ip_from指令,能够接受IP地址和CIDR范围。
 real_ip_header X-forwarded-For;
 set_real_ip_from 192.168.0.0/16;
 set_real_ip_from 127.0.0.1;


  • 代理模块
主要指令
首先的一组指令允许你建立基本的设置,例如,向location中的后端服务器传递的信息,以及如何传递。

proxy_pass    使用环境:location,if
指定转发到后端服务器的请求,在location中指示:
          tcp套接字         proxy_pass http://hostname:port;
          unix套接字        proxy_pass http://unix:/path/to/file.socket;
          也可以指向upstream区段:
            proxy_pass http://myblock;
            对于安全流量,还可以使用https://。另外,URI部分也可以使用允许的变量。
            示例:
                     proxy_pass http://localhost:8080;
                     proxy_pass http://unix:/tmp/nginx.sock;
                     proxy_pass http://$server_name:8080;
                      #使用upstream区段:
                           upstreambackend{
                                           server 127.0.0.1:8080;
                                           server  127.0.0.1:8081;
                                             }
                            location ~*  \.php${
                                              proxy_pass http://backend;
                                                 }

proxy_hide_header             使用环境:http,server,location
默认情况下,当nginx准备从后端服务器转发至客户端响应的时候,会忽略一些头信息:date,server,x-pad
和x-accel-*。使用这个指令可以隐藏更多的客户端头行(header line)。可以插入该指令多次,每次一个
头(header)名。
语法:proxy_hide_header name;
 
 
proxy_redirect                      使用环境:http,server,location
允许改写出现在HTTP头却被后端服务器触发重定向的URL。
语法:off,default,或选择的URL 
off-重定向被转到实际的位置;
default-proxy_pass指令的值被用作主机名和当前文档的路径附加;
 注意:proxy_redirect必须插在proxy_pass 指令之后,因为配置文件解析顺序是由上而下的。

缓存,缓冲和临时文件
下列指令可以建立一个缓存系统,减少转发到后端服务器的请求的数量。
proxy_buffer_size          使用环境:http,server,location
设置缓冲区的大小,该缓冲区用于存放读取来自后端服务器响应数据的开始部分,通常包含简单的头
(header)数据。
语法:数值(大小)
proxy_buffer_size  4k;

proxy_buffering     使用环境:http,server,location
定义是否缓冲后端服务器的响应。如果设置为on,那么nginx将把响应数据存储在内存中,使用内存空间来
提供缓冲。如果缓冲用完,响应数据就存储到临时文件;如果设置为off,响应就直接转发到客户端。
语法:on或off
默认值:on

proxy_buffers   使用环境:http,server,location
设置缓冲数量和大小,用于存放从后端服务器读取的响应。
语法:proxy_buffers数量 大小
默认值:八个缓冲区,每个缓冲区4k或8k
示例:fastcgi_buffers   8 4k

proxy_busy_buffers_size   Context: http,server,location
在缓冲区中,收到的后端数据堆积超过该指令指定的数值,缓冲就会被刷新,并且数据被发送至客户端。
语法:数值(size)
默认值: 2*proxy_buffer_size
示例:proxy_cache cache1;

限制、超时设定和错误
proxy_connect_timeout           使用环境:http,server,location
定义后端服务器连接超时。这和读取、发送超时不一样,如果nginx已经连接到后端服务器,那么该指令是
不合适的。
语法:时间值(秒)
示例:proxy_connect_timeout 15;

proxy_read_timeout          使用环境:http,server,location
从后端服务器读取数据超时。这个超时不应用于全部响应延迟,而是两个读操作的响应延时。
语法:时间值(秒)
默认值:60
示例:proxy_read_timeout 60;

proxy_send_timeout     使用环境:http,server,location
发送数据到后端服务器超时。这个超时不应用于全部响应延迟,而是两个写操作的响应延时。
语法:时间值(秒)
默认值:60
示例:proxy_send_timeout 60;

proxy_intercept_error   使用环境:http,server,location
默认情况下,nginx返回所有的错误页(HTTP状态代码 400 及更高),由后端服务器直接发送到客户端。
如果该指令设置为on,那么错误代码被解析,能够与指令error_page指定的值相匹配。
默认值:off

proxy_headers_hash_max_size     使用环境:http,server,location
为了加速处理请求,nginx使用哈希表来存储代理的头信息,这个指令定义了该表的最大值。如果与
后端服务器通讯使用的头(header)大于512个头,必须增加该值。
语法:数值(大小)
默认值:512

proxy_headers_hash_bucket_size   使用环境:http,server,location
设置在代理头哈希表(proxy headers  hash tables)中最长的header名字,如果代理头名称超过64个字符,
不许增加该值。
语法:数值
默认值:64

proxy_set_header   使用环境:http,server,location   
该指令允许你重新定义代理header值再转到后端服务器。可以声明多次。
语法:proxy_set_header  Header  Value;
示例:proxy_set_header Host $host;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值