トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

apache:SetEnvIfでHTTPヘッダー情報をもとに制御する のバックアップ(No.1)


apache:SetEnvIf?でHTTPヘッダー情報をもとに制御する

たとえば、ロードバランサーを使用している環境で、クライアントの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。

参考サイト

- [[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]]