Nginx模块学习(二)

简介: Nginx模块学习(二)

模块

标准的http功能模块集合http://nginx.org/en/docs(可以查看更多的功能模块)

20190528223417121.png

编译选项 作用
–with-http_stub_status_module nginx客户端状态
    location /mystatus {
         stub_status;
    }

重写后判断nginx配置文件是否有语法错误

nginx -t -c /etc/nginx/nginx.conf
• 1

重新加载配置文件

nginx -s reload -c /etc/nginx/nginx.conf

访问地址http://192.168.254.130:8060/mystatus

20190528212821290.png

编译选项 作用
–with-http_sub_module http内容替换

使用方法,默认是替换第一个,如果需要替换全部可以添加

语法:sub_filter string replacement

默认是没有加的

配置文件可添加的地方:http,server,location

ub_filter 'abc' '123';
sub_filter_once off;

nginx请求限制

nginx限制请求数ngx_http_limit_req_module模块

1、键值的定义,就是限制的参数。这个在http里面设置。

limit_req_zone

语法: limit_req_zone $variable zone=name:size rate=rate;

默认值: none

配置段: http

例子:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

说明:区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次。

使用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录。

2、设置对应的共享内存限制域和允许被处理的最大请求数阈值。

语法: limit_req zone=name [burst=number] [nodelay];

默认值: —

配置段: http, server, location

limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
    location /www.ttlsa.com/ {
        limit_req zone=ttlsa_com burst=5;
    }
}

限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。

如果不希望超过的请求被延迟,可以用nodelay参数,如:

limit_req zone=ttlsa_com burst=5 nodelay;

nginx限制连接数ngx_http_limit_conn_module模块

1、用于限制每个已定义键的连接数特别是来自单个IP地址的连接数。并不是所有的连接都被计算在内。只有当服务器处理了一个请求,并且整个请求头已经被读取时,才会计算连接。

limit_conn_zone

语法: limit_conn_zone $binary_remote_addr zone=addr:10m;

默认值: none

配置段: http

例子:limit_conn_zone $binary_remote_addr zone=addr:10m;


2、设置允许一个IP同时的连接数。

limit_conn

语法: limit_conn zone number;

默认值: none

配置段:http, server, location

例子:

limit_conn_zone $binary_remote_addr zone=addr:10m; 
server { 
     location /download/ {  
     limit_conn addr 1; 
 }

设置了内存空间的连接数,一旦超过,将会返回错误代码。一个IP同时只允许一个连接。

nginx访问控制

  • 基于IP的访问控制 http_access_module
  • 基于用户的信任登陆 http_auth_basic_module
    配置:server,http,location

Location配置

location的语法规则如下: location [=||*|^~] /uri/ { … }.


在nginx中location分为两类:普通location和正则location。普通 location ”是以“ = ”或“ ^~ ”为前缀或者没有任何前缀的 /uri/,包括“/”;“正则 location ”是以“ ~ ”或“ ~* ”为前缀的 /uri/ 。

标识符 描述
= 精确匹配;用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功,就停止匹配,立即执行该location里面的请求。
~ 正则匹配;用于正则uri前,表示uri里面包含正则,并且区分大小写。
~* 正则匹配;用于正则uri前,表示uri里面包含正则,不区分大小写。
^~ 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。
普通匹配(最长字符匹配);与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。

http_access_module

对页面进行访问控制

    location ~ ^/1.html {
        root   /opt/app/code;
        deny 192.168.60.1;
        allow all;
        index  index.html index.htm;
    }

不与许192.168.60.1访问1.html这个页面。

http_access_module的局限性:如果有客户端使用代理的话nginx只能获取到代理的ip而不能得到客户端的真实ip。

改进方法:采用别的http头信息控制访问,如:HTTP_X_FORWARD_FOR

该信息头会把ip一层一层的往下传,一直往后面加。

http_auth_basic_module

用户登录认证

使用htpasswd生成账号和密码

需要安装httpd,才能使用htpasswd

yum install -y httpd-tools

指定文件并生成账号和密码

htpasswd -c ./auth_conf bushro

image.png

编辑配置文件

    location ~ ^/1.html {
        root   /opt/app/code;
        auth_basic "Auth access test!input your passwd!";
        auth_basic_user_file /etc/nginx/auth_conf;
        index  index.html index.htm;
    }

重新加载配置文件后再次访问1.html就需要账号和密码才能进入

20190603200752670.png

相关文章
|
29天前
|
缓存 负载均衡 应用服务中间件
Nginx 学习
【10月更文挑战第17天】Nginx 是一款非常强大的工具,掌握它的使用和配置对于构建高性能、可靠的 Web 应用至关重要。随着技术的不断发展,Nginx 也在不断更新和完善,为我们提供更好的服务和支持。
|
3月前
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
467 2
|
1月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
154 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
1月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
107 2
k8s学习--基于Ingress-nginx实现灰度发布系统
|
1月前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
72 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
1月前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
186 0
|
1月前
|
应用服务中间件 nginx C++
nginx的cgi模块
nginx的cgi模块
32 0
|
3月前
|
缓存 应用服务中间件 nginx
安装nginx-http-flv-module模块
本文介绍如何为Nginx安装`nginx-http-flv-module`模块。此模块基于`nginx-rtmp-module`二次开发,不仅具备原模块的所有功能,还支持HTTP-FLV播放、GOP缓存、虚拟主机等功能。安装步骤包括:确认Nginx版本、下载相应版本的Nginx与模块源码、重新编译Nginx并加入新模块、验证模块安装成功。特别注意,此模块已包含`nginx-rtmp-module`功能,无需重复编译安装。
170 1
|
3月前
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?