を見て、env使ってBASIC認証バイパスしたりしてるなぁと思ったので晒してみます:
<Location />
Satisfy Any
Order Deny,Allow
Deny from all
Allow from env=trusted
Allow from env=my_ktai
AuthType Basic
AuthName "HIMITSU"
AuthUserFile /usr/irori/contents/example.com/htpasswd
Require valid-user
</Location>envに値をセットするのはSetEnvIfを使っていかようにも。
SetEnvIf User-Agent "^HIMITSU_Browser" trusted=1 SetEnvIf Request_URI "^/api/" trusted=1 SetEnvIf X_CLIENT_TYPE "^(docomo|au|softbank)" is_mobile SetEnvIf x-up-subno "XXXXXXXXXXXX_XX\.ezweb\.ne\.jp" my_ktai SetEnvIf is_mobile "^$" !my_ktai
一方、Nginxでは…
allow
Welcome to NGINX Wiki! | NGINX
syntax: allow [ address | CIDR | all ]
allowで変数参照を使えないのでちょっと残念。
追記#1
CIDRベースのアクセス拒否/許可なら、geoとrewriteでできた。
http {
...
geo $geo {
default no;
124.146.174.0/24 docomo;
...
59.135.38.128/25 au;
...
59.135.38.128/25 softbank;
...
192.0.2.0/24 mycompany;
}
...
server {
...
location / {
if ($geo !~* '^(docomo|au|softbank|mycompany)$') {
return 403;
}
proxy_pass ...
}