linux nginx访问控制只允许某个ip段访问特定路径

葫芦的运维日志

下一篇 搜索 上一篇

2013/04/24 18:25


要在nginx中做特定目录访问控制首先要了解nginx中^~的意义,^~ 匹配路径的前缀,优先级在conf正则里同=一样是最高的优先匹配。
例如^~/control/ {} 即为匹配任何以/control/开头的路径并不再匹配其他正则。

location ^~ /control/ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
allow 172.30.1.0/24;
#如果允许多个段访问 只需追加 allow XXX.XXX.XXX.XXXX/mask即可
deny all;
}

以上规则即 /control/为开头的路径只能由172.30.1.0/24段访问,其他地址禁止访问。
由于^~正则优先级最高并不再匹配正则的规则所以需要在location内部加上
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;

以使/control/能被172.30.1.0段的地址正常访问,并让里面的文件能正常的解析。

葫芦的运维日志

上一篇 搜索 下一篇
© 冰糖葫芦甜(bthlt.com) 2019 王梓 赞助联系方式 陕ICP备17005322号