「Apache で特定の URL のみ Basic 認証を外す方法」に関連して
を見て、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 ... }