专栏首页咻一咻Nginx 更多模块详解(十)

Nginx 更多模块详解(十)

http协议相关的配置结构

http {
    ...
    ...         #各server的公共配置
    server {    #每个server用于定义一个虚拟主机
        ...
    }
    server {     
        ...
        server_name   #虚拟主机名
        root          #主目录
        alias         #路径别名
        location [OPERATOR] URL {     指定URL的特性
            ...
            if CONDITION {
                ...
            }
        }
    }
}

ngx_http_index_module

模块功能

指定默认网页资源

1、index file ...;指定默认网页资源,注意:ngx_http_index_module模块
    可用位置:http, server, location

    示例模板:
    server {
        server_name www.a.com;
        root /data/web3/;
        location /bbs/ { 
            alias /web/forum/;
            index index.php
        }   #输入http://www.a.com/web/forum/时默认打开index.php
    }

ngx_http_index_module模块 详细说明请参考官网 地址链接

ngx_http_access_module

模块功能

模块实现基于ip的访问控制功能

1、allow address | CIDR | unix: | all;
    允许访问指定的网络或地址。如果指定了特殊值unix:指定(1.5.1),允许对所有unix域套接字进行访问。
    可用位置:http, server, location, limit_except

2、deny address | CIDR | unix: | all;
    拒绝访问指定的网络或地址。如果指定了特殊值unix:指定(1.5.1),则拒绝访问所有unix域套接字
    可用位置:http, server, location, limit_except

    自上而下检查,一旦匹配,将生效,条件严格的置前

    示例模板:
    server{
        server_name www.a.com;
        root /data/web3/;
        location / { 
            deny  192.168.1.1; 
            allow 192.168.1.0/24; 
            allow 10.1.1.0/16; 
            allow 2001:0db8::/32; 
            deny  all; 
        }
    }

ngx_http_access_module模块 详细说明请参考官网 地址链接

ngx_http_auth_basic_module

模块功能

模块实现基于用户的访问控制,使用basic机制进行用户认证

1、auth_basic string | off;
    可用位置:http, server, location, limit_except

2、auth_basic_user_file file;
    可用位置:http, server, location, limit_except

    示例模板:
    server{
        server_name www.a.com;
        root /data/web3/;
        location /admin/ {
            auth_basic "Admin Area";
            auth_basic_user_file /etc/nginx/.ngxpasswd;
            allow 192.18.99.1; #只能这台主机访问
            deny all;
        }
    }
    用户口令文件:
    1、明文文本:格式name:password:comment 
    2、加密文本:由htpasswd命令实现 --> httpd-tools所提供 

    命令:
        yum install httpd-tools #安装
        htpasswd -cm /etc/nginx/.ngxpasswd admin #创建admin用户
        cat /etc/nginx/.ngxpasswd #查看所创建的用户

ngx_http_auth_basic_module模块 详细说明请参考官网 地址链接

ngx_http_stub_status_module

模块功能

模块用于输出nginx的基本状态信息

输出信息示例:
    Active connections: 291  
    server accepts handled requests 
    16630948 16630948 31070465  
    上面三个数字分别对应accepts,handled,requests三个值Reading: 6 Writing: 179 Waiting: 106

    Active connections:当前状态,活动状态的连接数 
    accepts :统计总值,已经接受的客户端请求的总数 
    handled :统计总值,已经处理完成的客户端请求的总数 
    requests:统计总值,客户端发来的总的请求数 
    Reading :当前状态,正在读取客户端请求报文首部的连接的连接数 
    Writing :当前状态,正在向客户端发送响应报文过程中的连接数 
    Waiting :当前状态,正在等待客户端发出请求的空闲连接数

1、stub_status; 
    可用位置:server, location

    示例模板:
    server{
        server_name www.a.com;
        root /data/web3/;
        location  /status { 
            stub_status; 
            allow 172.16.0.0/16; #为了安全加ip限制
            deny all; 
        }
    }

ngx_http_stub_status_module模块 详细说明请参考官网 地址链接

ngx_http_log_module

模块功能

指定日志格式记录请求

1、log_format name string ...; 
    string可以使用nginx核心模块及其它模块内嵌的变量
    可用位置:http

2、access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; 
    access_log off; 
    访问日志文件路径,格式及相关的缓冲的配置 
        buffer=size
        flush=time 
    可用位置:http, server, location, if in location, limit_except
    注意:如果使用缓冲区或gzip(1.3.10,1.2.7)参数,则将对日志进行写操作。

3、open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time]; 
    open_log_file_cache off; #关闭缓存
    可用位置:http, server, location
    缓存各日志文件相关的元数据信息 
    max:缓存的最大文件描述符数量 
    min_uses:在inactive指定的时长内访问大于等于此值方可被当作活动项 
    inactive:非活动时长 
    valid:验证缓存中各缓存项是否为活动项的时间间隔

示例模板:
    http{
        log_format compression '$remote_addr-$remote_user [$time_local] '   
            '"$request" $status $bytes_sent'  
            '"$http_referer" "$http_user_agent" "$gzip_ratio"';
        access_log /spool/logs/nginx-access.log compression buffer=32k;
    }

ngx_http_log_module模块 详细说明请参考官网 地址链接

ngx_http_referer_module

模块功能

用来阻止Referer首部无有效值的请求访问,可防止盗链

1、valid_referers none|blocked|server_names|string...; 
    定义referer首部的合法可用值,不能匹配的将是非法值 
    none:请求报文首部没有referer首部 
    blocked:请求报文有referer首部,但无有效值 
    server_names:参数,其可以有值作为主机名或主机名模式 
    arbitrary_string:任意字符串,但可使用*作通配符 
    regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*\.magedu\.com
    可用位置:server, location

示例模板:
    valid_referers none block server_names *.a.com a.* ~\.a\.; 
    if  ($invalid_referer)  { 
        return 403  http://www.a.com; 
    }

ngx_http_referer_module模块 详细说明请参考官网 地址链接

ngx_http_headers_module

模块功能

模块向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值

1、add_header name value [always]; 
    添加自定义首部 
    add_header X-Via  $server_addr; 
    add_header X-Cache $upstream_cache_status; 
    add_header X-Accel $server_name;
    可用位置:http, server, location, if in location

2、add_trailer name value [always]; 
    添加自定义响应信息的尾部
    可用位置:http, server, location, if in location

ngx_http_headers_module模块 详细说明请参考官网 地址链接

ngx_stream_core_module

nginx的其它的二次发行版:

Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。从2011年12月开始,Tengine成为一个开源项目,官网http://tengine.taobao.org/

OpenResty:基于Nginx 与Lua语言的高性能Web 平台

模块功能

模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器

1、stream { ... } 
    定义stream相关的服务; 
    可用位置:main 
    stream { 
        upstream mysqlsrvs{ 
            server 192.168.22.2:3306;  
            server 192.168.22.3:3306;  
            least_conn; 
        } 
        server { 
            listen 10.1.0.6:3306; 
            proxy_pass mysqlsrvs; 
        } 
    }

2、listen 
    listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
    可用位置:server

ngx_stream_core_module模块 详细说明请参考官网 地址链接

ngx_stream_proxy_module

模块功能

可实现代理基于TCP,UDP (1.9.13), UNIX-domain sockets的数据流

1、proxy_pass address;
    指定后端服务器地址
    可用位置:server

2、proxy_timeout timeout;
    无数据传输时,保持连接状态的超时时长 默认为10m
    可用位置:stream, server

3、proxy_connect_timeout time;
    设置nginx与被代理的服务器尝试建立连接的超时时长默认为60s
    可用位置:stream, server

示例:
stream {
    upstream mysqlsrvs { 
        server 192.168.0.10:3306; 
        server 192.168.0.11:3306; 
        hash $remote_addr consistent; 
    } 
    server { 
        listen 172.16.100.100:3306; 
        proxy_pass mysqlsrvs; 
        proxy_timeout 60s; 
        proxy_connect_timeout 10s; 
    } 
}

ngx_stream_proxy_module模块 详细说明请参考官网 地址链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx ngx_http_core_module模块详解(三)

    这里只写了几个ngx_http_core_module 模块参数更多请参考官网 地址链接

    咻一咻
  • Nginx ngx_http_proxy_module模块详解(五)

    咻一咻
  • Nginx ngx_http_rewrite_module模块详解(四)

    咻一咻
  • 简单的零配置命令行 http 服务器--http-server入门

    http-server是一个简单的零配置命令行http服务器。 它足够强大,足以用于生产用途,但它既简单又易于破解,可用于测试,本地开发和学习

    lyb-geek
  • nginx0.1.0之http模块初始化源码分析(5)

    继续http模块的分析,这次分析的是init_module钩子函数的执行。http模块各子模块的init_module钩子主要做的事情是两个,一个就是注册pha...

    theanarkh
  • Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865

    zhangrelay
  • Nginx模块之Filter解析

    过滤模块简介 执行时间和内容 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理。它的处理时间在获取回复内容之后,向用户发送响...

    用户1263954
  • 基于OEA框架的客户化设计(三) “插件式”DLL

        本篇主要描述GIX4项目中如何把单独的模块设计为一个“插件”,如何把它组装到系统中。至于为什么加引号,之后会有说明。 原理     在基于产品线开发时,...

    用户1172223
  • 【AI快报】Qualcomm发布新软件开发工具包 | 盖茨改口否定人工智能威胁论

    Qualcomm发布新的软件开发工具包 ? 5月2日,Qualcomm为机器智能平台Zeroth发布新的软件工具包(SDK),这将会让使用Qualcomm芯片...

    新智元
  • Go 语言网络编程系列(五)—— HTTP 编程篇:HTTP/HTTPS 请求处理

    本篇教程我们将介绍 HTTP 服务端技术,包括如何处理 HTTP 请求和 HTTPS 请求。

    学院君

扫码关注云+社区

领取腾讯云代金券