Apacheのカスタマイズ

最終更新日 2003/04/14

  1. cgi-binディレクトリ内でも画像表示
  2. 「Not Found」じゃ嫌だ
  3. SSIも可
  4. 「Index of ~」は見せたくない
  5. /usr/local/bin/perlでいいじゃない
  6. Basic認証で秘密のページを
  7. ユーザディレクトリでもcgi-binフォルダ内だけOK
  8. Apacheのバージョン情報を隠す
  9. 訪問者のホスト名を取得可能に

1. cgi-binディレクトリ内でも画像表示

通常CGIファイルは/Library/Webserver/CGI-Executables/に入れますが、画像掲示板などを設置した場合、このディレクトリ内ではjpg画像やgif画像を表示できません。
そこでカスタマイズその1。

picoなどで/etc/httpd/httpd.confを開きます。
659行目付近の
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
AddHandler default-handler gif jpg png
</Directory>
と変更する。
(拡張子は状況に合わせて増減してください。html、swfなど)

これでcgi-binディレクトリ内でも画像ファイルが表示可能になります。
では、また・・・


2. 「Not Found」じゃ嫌だ

「Not Found」や「ファイルがありません」などのエラードキュメント。これを自作してみようというのが今回の目標。
そこでカスタマイズその2。

picoなどで/etc/httpd/httpd.confを開きます。
919行目付近の
#ErrorDocument 404 /missing.html

ErrorDocument 404 /missing.html
と変更(コメントアウト)する。
missing.htmlは/Library/WebServer/Documents/に置いてください。
ちなみに僕のErrorDocumentはこちら
ではまた・・・


3. SSIも可

CGIもだいぶ慣れたと思いますので、今回はSSIを使用できるようにします。

sudoなどで/etc/httpd/httpd.confを開いてください。
397行目付近の
Options Indexes FollowSymLinks MultiViews

Options Indexes FollowSymLinks MultiViews Includes
と変更してください。

さらに、870行目付近の
#AddType text/html .shtml
#AddHandler server-parsed .shtml

AddType text/html .shtml
AddHandler server-parsed .shtml
と変更(コメントアウト)してください。

実際に使う場合にはhtmlファイルの拡張子を「shtml」とし、例えばそのファイルの最終更新日時を表示させるには<BODY>〜</BODY>に
<!--#echo var="LAST_MODIFIED" -->
と記述します。

ところで、indexファイルを「index.shtml」とした場合、デフォルトではshtmlファイルを見つけてくれませんので、443行目付近の
<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.html index.shtml
</IfModule>
と変更してください。

これでOK牧場。
では、さいなら・・・


4. 「Index of ~」は見せたくない

「Index of ~」などのファイル一覧ページが表示されてびっくりしたことはないですか。
今回はそれを非表示に設定します。

sudoなどで/etc/httpd/httpd.confを開いて
397行目の
Options Indexes FollowSymlinks MultiViews

Options FollowSymlinks MultiViews
に変更します。

すると・・・はいっ、消えました。


5. /usr/local/bin/perlでいいじゃない

OS Xのperlのディレクトリは/usr/bin/perl。「えっ、/usr/local/bin/perlじゃないの?」とお思いの方、たくさんおられると思います。その声にお答えしようというのが今回のカスタマイズ。

することはいたって簡単。
mkdir /usr/local/bin
でbinディレクトリを作って、シンボリックリンクを作るだけ。
ln -s /usr/bin/perl /usr/local/bin/perl
たったこれだけ。
それでは
さよならっ、さよならっ、さよならっ・・


6. Basic認証で秘密のページを

/Library/WebServer/Documents以下にsecretというパスワードが必要なフォルダを作るものとする。

cd /Library/WebServer/Documents
mkdir secret
cd secret
htpasswd -c -b pwfile takemac 0123 #ID=takemac Password=0123 のパスワードファイルを作る
sudo pico /etc/httpd/httpd.conf #下記を最後に追加する

<Directory "/Library/WebServer/Documents/">
    AllowOverride None
    Order allow,deny
    Allow from all
    
AllowOverride AuthConfig
AuthName "secret"
AuthType Basic
AuthUserFile /Library/WebServer/Documents/secret/pwfile
<Limit GET POST>
Require valid-user
</Limit>
</Directory> 

sudo /usr/sbin/apachectl restart #Apacheの再起動

これで、secret以下のファイルへはパスワードによる認証が必要になります。


7. ユーザディレクトリでもcgi-binフォルダ内だけOK

ユーザディレクトリでもcgi-binフォルダ内だけ、cgiの実行を許可します。

httpd.confの423行目付近の
<#Directory /home/*/Sites>

<#/Directory>
の後ろに

<Directory "/Users/*/Sites/cgi-bin">
    AllowOverride FileInfo AuthConfig Limit
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory> 

を追加し、Apacheの再起動。


8. Apacheのバージョン情報を隠す

デフォルトではサーバからのエラーメッセージは、Apacheのバージョン情報とともに表示されます。

しかし、セキュリティホールが見つかった場合、ハッキングの対象であることを露呈していることになります。不安な方は隠してしまいましょう。

httpd.confの583行目付近の
ServerSignature Onを
ServerSignature Off
に変更するだけ。

そしてApacheを再起動。
はいっ、消えました。


8. 訪問者のホスト名を取得可能に

デフォルトでは不可能である訪問者のホスト名を取得可能にします。

httpd.confの529行目付近の
HostnameLookups Offを
HostnameLookups On
に変更。

そのあと、Apacheの再起動。
以上っ。


HOME