前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 更多模块详解(十)

Nginx 更多模块详解(十)

作者头像
咻一咻
发布2020-05-29 15:29:46
4590
发布2020-05-29 15:29:46
举报
文章被收录于专栏:咻一咻

http协议相关的配置结构

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

ngx_http_index_module

模块功能

指定默认网页资源

代码语言:javascript
复制
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的访问控制功能

代码语言:javascript
复制
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机制进行用户认证

代码语言:javascript
复制
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的基本状态信息

代码语言:javascript
复制
输出信息示例:
    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

模块功能

指定日志格式记录请求

代码语言:javascript
复制
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首部无有效值的请求访问,可防止盗链

代码语言:javascript
复制
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

模块功能

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

代码语言:javascript
复制
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的服务连接,即工作于传输层的反代或调度器

代码语言:javascript
复制
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的数据流

代码语言:javascript
复制
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模块 详细说明请参考官网 地址链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • http协议相关的配置结构
    • ngx_http_index_module
      • ngx_http_access_module
        • ngx_http_auth_basic_module
          • ngx_http_stub_status_module
            • ngx_http_log_module
              • ngx_http_referer_module
                • ngx_http_headers_module
                  • ngx_stream_core_module
                    • ngx_stream_proxy_module
                    相关产品与服务
                    轻量应用服务器
                    轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档