nginx常用模块

nginx常用模块

1. stub_status
   应用: http、server段
    location /ngx-status {
        allow 127.0.0.1;
        deny all;
        stub_status on;
        access_log on;
    }

2. http_random_index_module 从目录中随机选择一个主页
   random_index on|off;
   应用:location

3. http_sub_module http内容替换
   sub_filter string replacement
   sub_filter_last_modified on | off; ->cache
   sub_filter_once on | off; 返回匹配的第一个还是全部
   应用:http、server、location段

4. limit_conn_module 连接限制
   limit_req_module 请求频率限制
   http请求是建立在tcp连接之上,一次连接可以处理多个http请求
   limit_conn_zone key zone=name:size;(name是空间名称 size是空间大小)
   limit_conn zone number; 限制多少个这样的空间大小
   应用:http、server、location段

   limit_req_zone key zone=name:size rate=rate;(name是空间名称 size是空间大小)
   limit_req_zone zone [burst=number] | [nodelay]; (burst放到下次处理的请求数、nodelay直接拒绝)
   http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    ...
    server {
        ...
        location /search/ {
            limit_req zone=one burst=5;
        }
    }

5. 访问控制:
   http_access_module 基于ip
   http_auth_basic_module基于用户认证
   location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
 }
 应用:http、server、location段

 6. http_x_forwarded_for包含所有经过的代理的ip
    解决经过代理后无法获取用户真实ip
    1). 采用http头信息控制访问 http_x_forwarded_for
    2). 结合geo模块操作
    3). 使用http自定义变量

7. nginx的使用场景
   1). 静态资源web服务器
   2). 代理服务器
   3). 负载均衡调度器
   4). 动态缓存

8. 在send_file开启的情况下、一般配合tcp_nopush提搞网络包的传输效率
   在keep_alive开启的情况下、一般配合tcp_nodelay提高数据包传输的及时性

9. http缓存机制
   brower ->  cache -> expire ? N -> display
                                Y -> etag    ->   if_none_match
                                      |               |
                                last_modify  ->    if_modified_since
                                      |
                                 web server  ->    200 / 304
                                      |                |
                                     resp             304
                                                       |
                                                     read cache
                               display       <-        |

10. 防盗链:
    要区别哪些是正常的用户请求,基于http_refer
    valid refer none blocked ip;
    eg . valid_refer none blocked 10.30.11.23;
        if ($valid_refer) {
          return 403;
        }
    所有非来自10.30.11.23的请求都将设置valid_refer=1,在下边会被直接return 40311. nginx作为代理
     正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;
     而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。
     eg. 正向代理一般用作局域网访问internet、多个局域网电脑使用同一个出口
         反向代理一般多个client使用多个server、具体访问到哪一个server对于client是不透明的、随机的

 12. proxy_buffering on | off; 是否开启代理缓冲
     proxy_Redirect  default | off | repleacement; 跳转重定向
     proxy_set_header filed value;设置头信息
     proxy_hide_header; 隐藏代理头信息
     proxy_Set_body; 设置代理请求体

 13. SLB分为4层负载均衡和7层负载均衡
     4层负载均衡主要是基于osi的传输层和包转发
     7层负载均衡主要是应用层 http、header、rewrite的改写
     nginx是属于7层的LSB

 14. upstream name {...}
     upstream name {
       server server1 backup; backup代表备用节点
       server server2 down; down代表不参与
       max_fails num; 允许请求失败的次数
       fails_timeout; 经过max_fails次失败后、服务暂停的时间
     }

 15. nginx轮询策略
     默认是基于请求(轮询、加权轮询)
     可以基于ip (ip_hash: 来自同一ip的请求会到达同一server、若前边还有一次负载均衡、得到的不是user真实的ip)
     可以基于url 
     last_conn (最少连接数、那个server的连接数少、达到哪个server上)
     hash 关键字

 16. 代理缓存
     proxy_cache_path path levels:levels 存放对应的缓存文件 eg: 1:2表示2级目录
     proxy_cache zone; 
     proxy_cache_valid 200 304 2m;说明对于状态为200304的缓存文件的缓存时间是2分钟,两分钟之后再访问该缓存文件时,文件会过期,从而去源服务器重新取数据。
     proxy_Cache_valid [code];
     对缓存的过期与清除起作用的因素的优先级从高到低依次为:
inactive配置项、源服务器设置的Expires、源服务器设置的Max-Age、proxy_cache_valid配置项

17. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 ;
    表示若上游返回的状态码是error或者其它列出的状态、就自动连接下一台server

18. proxy_no_Cache string; 配置哪些不缓存

19. 大文件分片请求、 http_slice_module
    优势:每个子请求收到的数据都会形成独立的文件、一个请求中断另外的请求不受影响
    缺点:文件很大或者slice很小时可能会造成文件描述符耗尽
20. rewrite 
    1) url跳转、支持开发者设计
    2) seo优化
       rewrite ^(.*)$ /pages/index.html break; 将所有请求转发到pages/index.html页面
       语法:rewrite regex replacement [flag];
       flag有:
       last匹配到规则之后会跳转对应location、类似重新发起一次回话的效果
       break匹配到之后、直接终止下边的规则匹配
       redirect 返回302临时重定向,下次访问还会请求后端server
       permannent 301永久重定向、brower会记录、下次访问同样url直接跳转,不向后端发请求
     rewrite的优先级:
     server -> location -> location中选中的rewrite

猜你喜欢

转载自blog.csdn.net/njys1/article/details/77927468