Apache2.4 のRequireディレクティブでアクセス制御を行う †
概要 †Requireディレクティブや SetEnvIfディレクティブを使用して、様々な条件でアクセス制御を行う方法を記載する。 具体的には・・ Requireディレクティブ †https://httpd.apache.org/docs/2.4/ja/mod/mod_authz_core.html#require Apache2.4 では、Apache2.2 からアクセス制御の記述方法が大幅に変わっている。 Apache2.2 Order deny,allow deny from all allow from XXX.XXX.XXX.XXX Apache2.4 <RequireAny> Require all denied Require ip XXX.XXX.XXX.XXX </RequireAny>
など。 RequireAny | RequireAll | RequireNone ディレクティブ †RequireAny、RequireAll、RequireNone の各ディレクティブを使用して複数条件の AND、OR を設定する事ができる。
SetEnvIfディレクティブ †https://httpd.apache.org/docs/2.4/ja/mod/mod_setenvif.html#SetEnvIf
・attribute には、リクエストヘッダフィールド や Remote_Host など規定されている項目名、環境変数などが指定できる。 設定例 †設定例の利用シーン †・多くのフォルダがあり、個別のフォルダに .htaccess を設定するのが難しい場合 特定のURIのみBasic認証をかける †AuthType Basic AuthName "Please Input user name and password" AuthUserFile /path_to_www/.htpasswd SetEnvIf Request_URI "^/*" allow_page SetEnvIf Request_URI "^/auth-dir/*" !allow_page <RequireAny> Require env allow_page Require vaild-user </RequireAny> <Files ~ "^\.(htaccess|htpasswd)$"> Require all denied </Files> 特定のURIのみBasic認証をかけない †AuthType Basic AuthName "Please Input user name and password" AuthUserFile /path_to_www/.htpasswd SetEnvIf Request_URI "^/noauth-dir/*" allow_page <RequireAny> Require env allow_page Require vaild-user </RequireAny> <Files ~ "^\.(htaccess|htpasswd)$"> Require all denied </Files> |