Nginx的访问控制
Nginx的deny和allow指令是由ngx_http_access_module模块提供,Nginx安装默认内置了该模块。
除非在安装时有指定 --without-http_access_module。
-
deny,allow顺序
示例1:
location /
{
allow 192.168.0.0/24;
allow 127.0.0.1;
deny all;
}
说明:这段配置值允许192.168.0.0/24网段和127.0.0.1的请求,其他来源IP全部拒绝。
示例2:
location ~ “admin”
{
allow 110.21.33.121;
deny all
}
说明:访问的uri中包含admin的请求,只允许110.21.33.121这个IP的请求。
这里deny,allow的顺序是无所谓的,你想禁止那个IP就deny,allow all 允许剩下的所有。 -
基于location的访问控制
匹配到一些目录,特殊请求来做的shuai目录下面的全部禁止 location /shuai/ { deny all; } uri包含某些bak和.ht全部禁止 location ~ ".bak|\.ht" { return 403; } 请求的uri中包含data、cache、tmp、image、attachment并且以.php结尾的,全部禁止访问。 location ~ (data|cache|tmp|image|attachment).*\.php$ { deny all; }
-
nginx变量访问控制(document_uri ,request_uri ,user_agent,http_referer)
if (条件判断) { 具体的deny,allow规则 }把从百度过来的返回一个html代码 if ($http_referer ~ 'baidu.com') { return 200 "<html><script>window.location.href='//$host$request_uri';</script></html>"; }
-
Nginx的限速
可以通过ngx_http_limit_conn_module(限制下载速度)和ngx_http_limit_req_module(限制请求数)模块来实现限速的功能。
nginx限速