-
Notifications
You must be signed in to change notification settings - Fork 4
Apacheでand条件でアクセス制限を試してみた
mechamogera edited this page Nov 19, 2012
·
3 revisions
SetEnvIFを用いてAND条件でApacheのアクセス制限をしてみた
- AWS EC2インスタンス(Amazon Linux 64bit)
- httpd.x86_64 2.2.23-1.25.amzn1
- Apacheインストール
$ sudo yum install -y httpd
- アクセスファイル設定
$ sudo echo "<h1>hoge</h1>" > /var/www/html/test.html
$ sudo echo "<h1>hoge</h1>" > /var/www/html/test2.html
- Apacheアクセス制限設定
- /etc/httpd/conf.d/test.confを以下のように編集(/test.htmlへのアクセスでacceptヘッダにtext/htmlが含まれる場合はアクセス許可)
SetEnvIF Request_URI "^/test.html" ok_path
SetEnvIF Accept "text/html" ok
SetEnvIF ok_path "^$" !ok
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from env=ok
</Directory>
</VirtualHost>
- Apache起動
$ sudo /etc/init.d/httpd start
- アクセス制限確認
- ブラウザから/test.htmlにアクセス可能 => OK
- ブラウザから/test2.htmlにアクセス不可(403 Forbidden) => OK
- 以下のRubyスクリプトで/test.htmlにアクセス不可(403 Forbidden) => OK
require 'net/http'
res = Net::HTTP.start('[ec2のDNS名]', 80) do |http|
http.get('/test.html') #, "accept" => "text/html")
end
p res
p res.body