メイン

Apache アーカイブ

2007年07月20日

DNSなしでNameVirtualHostの設定を確認する

ドメイン名によってドキュメントルートを切替えるApacheのNameVirtualHost

レンタルサーバーなどではよく使われている手法である。これで問題となるのがテストしたいときにDNS登録されていないとhttpd.conf一番上にある設定が使われてしまうことである。

普通はDNSに登録されているものだが、既存で動いているサイトの設定変更のテストなどをやりたい場合にわざわざDNSを書き換えることなどできないだろう。そんな時に役立つテクニックを紹介する。

答えは簡単で、windowsでもlinuxでもデフォルトではhostsファイルの設定がDNSより優先されるのでhostsファイルに書き換えればいいのだ。

#LAN内からNameVirtualHostの設定を確認する
192.168.x.x www.myserver.com
192.168.x.x www2.myserver.com
192.168.x.x www.hoge.com

こんな感じでNameVirtualHostのServerNameに設定したドメインをIPと対応させればいいだろう。なおDNSはキャッシュされるので(特にWindowsはすぐに反映されない)すぐに変わらないからといって失敗と決め込んではいけない。

自分がレンタルサーバーを利用していてIPアドレスで打ち込んだときとドメイン名で打ち込んだときに違うドキュメントが表示されたらそれはNameVirtualHostの設定で共有されていると考えていい。

2007年07月23日

Apacheのアクセスログからロボットのログを分離

一昔前にはワームが飛び交っていたのでそれを分離する設定が重宝した。

今は新規のロボットエンジンがスパムのごとくアクセスログを埋めてくれるのでロボットはロボットで別のログにまとめる必要に迫られる。

でhttpd.confに以下のようにCustomLogの設定を入れる

#主要なロボットと(迷惑な)新規ロボットをひとまとめに別ログにする
SetEnvIf User-Agent "(Googlebot)|(Slurp)|(Baiduspider)|(msnbot)|(Yeti)|(psbot)|(Ask Jeeves)|(Twiceler-0.9)" robots nolog
CustomLog logs/robot_log combined env=robots
CustomLog logs/access_log combined env=!nolog


終わったらapache再起動するべし。

新しいロボットがきたら
|(ロボットのUserAgent名)
組み合わせを増やしていけばいい。

正直いって現状ロボットアクセスが通常の2倍ぐらいありますです。うーむもっとがんばらねば!

2007年08月20日

ApacheバージョンやOSなどの情報を隠す

エラードキュメントの設定が適切にされていないところがほとんどの現状では必然的にApacheのバージョンやOSや付随する情報(PHPやOpenSSLのバージョン)が野ざらしになっているケースが多い。

実際問題エラーページについてデフォルトのまま放置しているようなサイトはバージョンを隠すような細かい設定ができる管理者がいないのだろうけども、簡単に対応できるので隠すのが望ましい。

httpd.confの以下の行を編集

ServerSignature Off
ServerTokens ProductOnly

ほとんどのバイナリではApacheとOSのバージョンまで見えてしまう設定になっている。

2008年09月30日

mod_proxy_ajpでApache Tomcat連携

前のエントリーに続きCentOSでJava環境構築シリーズ

Apache2.2になってmod_proxy_ajpを使うようになり、mod_jk(もはや非推奨)の時代より格段に楽になった。

通常CentOSのApache2.2にはモジュールがすでにインストールされた状態なので後はTomcatのインストールと連携の設定をhttpd.confに加えるだけとなる。

Tomcatのインストール

公式サイトからダウンロードして解凍する。/usr/javaに解凍してstartup.shを実行したらそのまま実行できた。 環境変数の設定いらないんだ・・・

一応ブラウザで単体で動くことを確認しておこう

http://サーバIP:8080/

httpd.confの設定

以下の設定をhttpd.confに加えるだけ、LoadModuleの設定は不要だが、 VineLinuxでやるときは必要だったのでコメント行として残しておいた。

#Tomcat Connect Setting
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
<Location /examples/>
  ProxyPass ajp://127.0.0.1:8009/examples/
</Location>

連携確認

http://サーバIP/examples/

Tomcatのサンプルが出てくればOK

 

2008年10月09日

mod_proxyでoracleの管理ツールを外部公開 企画倒れ編

mod_proxyでリバースプロキシをつくり、 OracleExpressEditionのapexを外から利用しようという魂胆

設定自体はmod_proxyがすでにロードされていれば、下記の内容を追記するだけ (ただしこのままだとどこからでもアクセス可能なので注意)

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /apex http://127.0.0.1:8080/apex
ProxyPassReverse /apex http://127.0.0.1:8080/apex

しかし、proxyを通すとパスの設定がおかしくなりログインできない。

やっぱり使い道が限られるのである。

2008年12月09日

favicon.icoをエラーログに記録しない

favicon.icoとはお気に入りに登録したときの小さいアイコン画像。

ブラウザがアクセス時に探しに行くので、用意していないと404のエラーが発生する。 それをエラーログに出力していると他のエラーが埋もれてしまうのでエラーログに出力しないようにしよう。

httpd.confに以下のように記述して再起動

# for remove favicon.ico
SetEnvIf Request_URI "\.(ico)$" no_err_log
CustomLog logs/access_log common env=!no_err_log

About Apache

ブログ「技術メモ」のカテゴリ「Apache」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

次のカテゴリはAppServerです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。