环境描述:
nginx | nginx/1.12.2 |
涉及nginx模块 | --without-http_access_module |
linux | CentOS Linux release 7.6.1810 (Core) |
使用vmware虚拟机作为服务器 |
Syntax: | allow |
---|---|
Default: | — |
Context: | http , server , location , limit_except |
Syntax: | deny |
---|---|
Default: | — |
Context: | http , server , location , limit_except |
问题描述:
在配置nginx限制ip访问时发现配置不起作用,限制的ip仍旧可以访问,location配置如下
location ~ ^/admin.html { deny 192.168.136.1; |
配置完成后,发现使用192.168.136.1主机仍然可以访问,如下图
解决:
查看官网可知
The rules are checked in sequence until the first match is found. In this example, access is allowed only for IPv4 networks 10.1.1.0/16
and 192.168.1.0/24
excluding the address 192.168.1.1
, and for IPv6 network 2001:0db8::/32
. In case of a lot of rules, the use of the ngx_http_geo_module module variables is preferable.
他会依次检查规则,直至找到第一个匹配项,也就是说如果匹配第一个,就不会再往后面找了
经测试发现,allow或者deny中有指定限制具体ip的放在上面即可,如上解决配置
location ~ ^/admin.html { deny 192.168.136.1; |
如果配置的只允许某ip访问,如果无法限制,也是同样的问题。