Skip to content

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

確認手順

  1. Apacheインストール
$ sudo yum install -y httpd
  1. アクセスファイル設定
$ sudo echo "<h1>hoge</h1>" > /var/www/html/test.html
$ sudo echo "<h1>hoge</h1>" > /var/www/html/test2.html
  1. 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>
  1. Apache起動
$ sudo /etc/init.d/httpd start
  1. アクセス制限確認
  • ブラウザから/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

参照サイト

Clone this wiki locally