*apache:SetEnvIfでHTTPヘッダー情報をもとに制御する [#ucb2ff01]
たとえば、ロードバランサーを使用している環境で、クライアントのIPアドレスでアクセス制御をしたいとき、こんな感じでできます。
SetEnvIf X-Forwarded-For "^192.[1-3][0-9]" TESTOK
<Location /> Order Deny,Allow
Deny from all
Allow from env=TESTOK
</Location>
さて、動作確認したいけど、確認できる環境にはロードバランサが無い場合が多いですよね。そんな場合でも、疎通レベルではcurlに「-H」オプションをつけて実行することで確認できます。
こんな感じです。
[root@localhost ~]# curl -H "X-Forwarded-For:192.22.192.11" http://localhost/test1/test.html
10.43.86.115 test OK!
[root@localhost ~]# curl -H "X-Forwarded-For:192.42.192.11" http://localhost/test1/test.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /test1/test.html
on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at localhost Port 80</address>
</body></html>
勿論、「X-Forwarded-For」以外の独自HEADERをもとに制御することもできます。例えば「TEST」とかもOK。
***参考サイト [#j0a2da5e]
- [[Apache の環境変数:http://httpd.apache.org/docs/2.0/ja/env.html]]
- [[Apache の環境変数:http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif]]
- [[Apache モジュール mod_access:http://httpd.apache.org/docs/2.0/ja/mod/mod_access.html]]
- [[curl.1 man ページ:http://www.hcn.zaq.ne.jp/___/unix/curl_manpage.html]]