nginx中ngx_http_access_module模塊能夠按客戶端地址設置是否有訪問權限。
allow
指令設置允許訪問的IP或網絡,如allow 172.17.0.8;
、allow 172.17.0.0/16;
deny
指令設置限制訪問的IP或網絡,如deny 172.17.0.8;
、deny 172.17.0.0/16;
allow
和deny
這兩個指令都可以配置在http, server, location, limit_except
塊中。
一個配置塊中如果配置了多個allow
或deny
指令,按先后順序逐條匹配,第一個匹配成功的規(guī)則立即生效不會再檢查后面的規(guī)則。
如何檢查規(guī)則是否匹配:請求的客戶端的IP與allow或deny指令后的IP/網絡是否匹配。
如以下配置中:172.17.0.8不能訪問,172.17.0.0/16網絡中的其它地址都能訪問。因為來自172.17.0.8的請求匹配到第一條規(guī)則deny 172.17.0.8;
后禁止訪問。而172.17.0.7能夠訪問是因為allow 172.17.0.0/16;規(guī)則生效。allowallow 172.17.0.0/16;
server {
listen 8366;
location / {
deny 172.17.0.8;
allow 172.17.0.0/16;
deny all;
root html;
index index.html index.htm;
}
}
?修改以上配置,將第一、二條規(guī)則交換順序后,172.17.0.8可以訪問。因為第一條規(guī)則allow 172.17.0.0/16;
匹配成功后不會再往后執(zhí)行deny 172.17.0.8
。
server {
listen 8366;
location / {
allow 172.17.0.0/16;
deny 172.17.0.8;
deny all;
root html;
index index.html index.htm;
}
}
閱讀原文:原文鏈接
該文章在 2025/7/1 23:43:04 編輯過