<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>横浜鯖缶日誌 &#187; apache</title>
	<atom:link href="http://pandora-lab.com/category/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://pandora-lab.com</link>
	<description>なんとも地味な日々の作業記録</description>
	<lastBuildDate>Fri, 05 Feb 2010 19:08:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>はんにんさがし</title>
		<link>http://pandora-lab.com/2010/01/01/%e3%81%af%e3%82%93%e3%81%ab%e3%82%93%e3%81%95%e3%81%8c%e3%81%97/</link>
		<comments>http://pandora-lab.com/2010/01/01/%e3%81%af%e3%82%93%e3%81%ab%e3%82%93%e3%81%95%e3%81%8c%e3%81%97/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 16:47:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://pandora-lab.com/?p=100</guid>
		<description><![CDATA[数カ月前からウェブサーバのトラフィックの上がりが、ノコギリ状に増えている問題があった。
状況としては
NFSのreadが定期的に頻発している。

NFSのwriteも中長期で見ると右肩上がり

短期で見ると特徴的なノコギリ波形を示す

１時間に３～４回ペースで定期的に急激なNFS read/writeが生じている。
NFSの微々たるreadだし、放っておいてもサービスにはまったく問題ないんだけど、グラフが汚れて見辛いので原因追求。
長中期で見るとreadの回数は調子こいて右肩上がりのまま留まることを知らないので、このままエスカレートしていくのを放っておくわけにもいかない。
犯人の追跡開始。
・apacheのログ解析では不明だった
・mod_securityでPOSTを取ったが問題は見当たらなかった
そのため
・tcpdump port nfs -nxXs 6000 &#124; grep read -C 20
・sar -n NFS 1 0
を同時に記録して解析を進めていくことにした。
・sarで３０秒間ほど急激なreadが定期的に発生していることを確認。

・一時的にreadが急激に上がった時間をメモしておく
10時36分31秒
10時51分39秒
11時05分58秒
11時21分14秒
11時36分03秒
次に、上記時刻のtcpdumpのhexdumpをみてみる。
すると11時21分17秒に一意のデータである特定キーワード(メールアドレス)が確認できたので、これを鍵にすることにした。

・ファイルサーバーからこのメールアドレスを全ファイル検索
grep -r 'drfadsee3@yahoo.com' ./
その結果
バイナリー・ファイル./ユーザA/blog/db/comment.email.idxは一致しました
バイナリー・ファイル./ユーザA/blog/db/comment.dbは一致しました
とユーザAのウェブスペースにこのメールアドレスを含むファイルがあることが判明。
ユーザAのアクセスログからPOSTしている時間だけ抜き取ってみた。
するとメモした時間とアクセスログのPOSTの時間が一致した。

・apacheのログ
grep ユーザA apache_log &#124; grep blog &#124; grep POST
09:18:13 :31367: &#91;gw4.winserversecure.com&#93; 85.17.145.7 ユーザーA POST /blog/mt-tb.cgi/145 HTTP/1.0 500 -
09:20:20 :31153: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
09:35:41 :9147: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
09:50:56 :21595: &#91;93.174.93.58&#93; ]]></description>
			<content:encoded><![CDATA[<p>数カ月前からウェブサーバのトラフィックの上がりが、ノコギリ状に増えている問題があった。<br />
状況としては</p>
<p>NFSのreadが定期的に頻発している。</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client-day.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-126" title="before_nfs_client-day" src="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client-day.png" alt="" width="495" height="532" /></a></p>
<p>NFSのwriteも中長期で見ると右肩上がり</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client2-year.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-125" title="before_nfs_client2-year" src="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client2-year.png" alt="" width="495" height="484" /></a></p>
<p>短期で見ると特徴的なノコギリ波形を示す</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client2-day.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-124" title="before_nfs_client2-day" src="http://pandora-lab.com/wp-content/uploads/2010/01/before_nfs_client2-day.png" alt="" width="495" height="484" /></a></p>
<p>１時間に３～４回ペースで定期的に急激なNFS read/writeが生じている。<br />
NFSの微々たるreadだし、放っておいてもサービスにはまったく問題ないんだけど、グラフが汚れて見辛いので原因追求。<br />
長中期で見るとreadの回数は調子こいて右肩上がりのまま留まることを知らないので、このままエスカレートしていくのを放っておくわけにもいかない。<br />
犯人の追跡開始。</p>
<p>・apacheのログ解析では不明だった<br />
・mod_securityでPOSTを取ったが問題は見当たらなかった</p>
<p>そのため<br />
・tcpdump port nfs -nxXs 6000 | grep read -C 20<br />
・sar -n NFS 1 0<br />
を同時に記録して解析を進めていくことにした。</p>
<p>・sarで３０秒間ほど急激なreadが定期的に発生していることを確認。</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/WS000000.png" rel="lightbox[100]"><img class="alignnone size-thumbnail wp-image-112" title="WS000000" src="http://pandora-lab.com/wp-content/uploads/2010/01/WS000000-500x729.png" alt="" width="500" height="729" /></a><br />
・一時的にreadが急激に上がった時間をメモしておく<br />
10時36分31秒<br />
10時51分39秒<br />
11時05分58秒<br />
11時21分14秒<br />
11時36分03秒</p>
<p>次に、上記時刻のtcpdumpのhexdumpをみてみる。<br />
すると11時21分17秒に一意のデータである特定キーワード(メールアドレス)が確認できたので、これを鍵にすることにした。</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/WS000001.png" rel="lightbox[100]"><img class="alignnone size-thumbnail wp-image-113" title="WS000001" src="http://pandora-lab.com/wp-content/uploads/2010/01/WS000001-500x729.png" alt="" width="500" height="729" /></a></p>
<p>・ファイルサーバーからこのメールアドレスを全ファイル検索</p>
<pre>grep -r 'drfadsee3@yahoo.com' ./</pre>
<p>その結果</p>
<pre>バイナリー・ファイル./ユーザA/blog/db/comment.email.idxは一致しました
バイナリー・ファイル./ユーザA/blog/db/comment.dbは一致しました</pre>
<p>とユーザAのウェブスペースにこのメールアドレスを含むファイルがあることが判明。<br />
ユーザAのアクセスログからPOSTしている時間だけ抜き取ってみた。<br />
するとメモした時間とアクセスログのPOSTの時間が一致した。</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/WS000002.png" rel="lightbox[100]"><img class="alignnone size-thumbnail wp-image-119" title="WS000002" src="http://pandora-lab.com/wp-content/uploads/2010/01/WS000002-499x615.png" alt="" width="499" height="615" /></a></p>
<p>・apacheのログ</p>
<pre>grep ユーザA apache_log | grep blog | grep POST
09:18:13 :31367: &#91;gw4.winserversecure.com&#93; 85.17.145.7 ユーザーA POST /blog/mt-tb.cgi/145 HTTP/1.0 500 -
09:20:20 :31153: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
09:35:41 :9147: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
09:50:56 :21595: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
10:05:58 :24286: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
10:20:41 :29154: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
10:36:01 :32163: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
10:51:07 :3821: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
11:05:28 :6609: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
11:20:44 :8161: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
11:35:33 :21388: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
11:51:17 :30978: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
12:06:07 :6032: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
12:21:20 :13718: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
12:37:55 :25341: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
12:51:58 :5509: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
13:07:38 :14897: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
13:23:05 :21912: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
13:38:30 :31049: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
13:53:28 :9117: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
14:08:33 :20520: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
14:11:35 :12844: &#91;66.90.77.6&#93; 66.90.77.6 ユーザーA POST /blog/mt-tb.cgi/81 HTTP/1.0 200 79
14:23:46 :28173: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
14:34:18 :4474: &#91;xanhlacay.info&#93; 74.86.238.186 ユーザーA POST /blog/mt-tb.cgi/105 HTTP/1.0 500 -
14:39:20 :8180: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
14:54:36 :19139: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
15:09:06 :30925: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
15:24:28 :7162: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
15:39:50 :17200: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
15:54:30 :29185: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -
16:10:49 :6930: &#91;93.174.93.58&#93; 93.174.93.58 ユーザーA POST /blog/mt-comments.cgi HTTP/1.1 500 -</pre>
<p>原因はユーザAに定期的に訪れる掲示板SPAMのボットによるものであることがわかった。</p>
<p>一般的にこの手のボットからのアクセスはapacheのログ解析やmod_securityのログ解析だけで比較的簡単に発見できるものだけど、今回は特異なケースだった。<br />
SPAMをPOSTされて<strong>500エラーを返しているにもかかわらず、mt-comments.cgiは実際に書き込みを行っているんである</strong>(もちろんコメント自体にSPAMは表示されないし、ログにも500エラーしか残らない)。<br />
そもそも特定の変則的なメッセージのPOSTで500エラーが発生する時点でMTの不具合だろう。<br />
他でこんな変態ポストをされたら犯人特定は極めて困難だと思う。</p>
<h1>対策方法</h1>
<p>・GeoIPでアクセス規制を入れる</p>
<pre>GeoIPEnable On
Order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
Allow from .googlebot.com
Allow from .yahoo.net
Allow from .msn.com
Allow from .naver.jp
Allow from env=AllowCountry
</pre>
<p>結果、下記のように問題は解決した。</p>
<p><a href="http://pandora-lab.com/wp-content/uploads/2010/01/after_nfs_client-day.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-122" title="after_nfs_client-day" src="http://pandora-lab.com/wp-content/uploads/2010/01/after_nfs_client-day.png" alt="" width="495" height="532" /></a><br />
<a href="http://pandora-lab.com/wp-content/uploads/2010/01/after_nfs_client2-day.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-121" title="after_nfs_client2-day" src="http://pandora-lab.com/wp-content/uploads/2010/01/after_nfs_client2-day.png" alt="" width="495" height="484" /></a><br />
<a href="http://pandora-lab.com/wp-content/uploads/2010/01/after_if_eth0-day.png" rel="lightbox[100]"><img class="alignnone size-full wp-image-120" title="after_if_eth0-day" src="http://pandora-lab.com/wp-content/uploads/2010/01/after_if_eth0-day.png" alt="" width="495" height="280" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://pandora-lab.com/2010/01/01/%e3%81%af%e3%82%93%e3%81%ab%e3%82%93%e3%81%95%e3%81%8c%e3%81%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_vhost_alias が普及しない理由</title>
		<link>http://pandora-lab.com/2009/11/08/mod_vhost_alias-%e3%81%8c%e6%99%ae%e5%8f%8a%e3%81%97%e3%81%aa%e3%81%84%e7%90%86%e7%94%b1/</link>
		<comments>http://pandora-lab.com/2009/11/08/mod_vhost_alias-%e3%81%8c%e6%99%ae%e5%8f%8a%e3%81%97%e3%81%aa%e3%81%84%e7%90%86%e7%94%b1/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 00:26:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://pandora-lab.com/?p=64</guid>
		<description><![CDATA[バーチャルホストが多くなってくると、同じ設定を繰り返すことが無駄に思えて自動化・構造化したくなってくるのが人の情というもの。
バーチャルホストを動的に割り当てる方法には、mod_rewrite で強制的に割り当てる方法と、mod_vhost_alias を使う方法があるけれども、返す環境変数がそれぞれ異なってしまう問題がある。
http://sub.example.com 　を　/home/exmaple.com/plublic_html/sub/　に割り当てる際のバーチャルホスト設定として、下記の３種の方法を試し、その際に返すDOCUMENT_ROOTを取得してみた。
(１)　VirtualHost
&#60;VirtualHost *&#62;
DocumentRoot /home/example.com/public_html/sub/
ServerName sub.exmaple.com
&#60;/VirtualHost&#62;
結果
/home/example.com/public_html/sub/
(２)　mod_rewrite
&#60;VirtualHost *&#62;
DocumentRoot /home/example.com/public_html/
ServerName example.com
ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^&#91;^.&#93;+\.example\.com$
RewriteRule (.*) %{HTTP_HOST}$1 &#91;C&#93;
RewriteRule ^(&#91;^.&#93;+)\.example\.com(.*) /home/example\.com/public_html/$1/$2 &#91;L&#93;
&#60;/VirtualHost&#62;

結果
/home/example.com/public_html/
(３)　mod_vhost_alias
UseCanonicalName Off
VirtualDocumentRoot /home/%2+/public_html/%1
結果
/home
以上のように、(２)または(３)の設定で、DOCUMENT_ROOTを、(１)の状態で扱うことはできない。
この不具合によって、環境変数を参照するCGIやモジュールに正常な動作は期待できない。
mod_vhost_alias のこの不具合はbugzillaで報告されているが、解消される様子はない。
https://issues.apache.org/bugzilla/show_bug.cgi?id=26052
具体的には下記のように環境変数が異なる。
■vhost
&#60;VirtualHost *&#62;
        DocumentRoot /var/www/html/exmaple.com/public_html/
        ServerName exmaple.com
&#60;/VirtualHost&#62;
DOCUMENT_ROOT="/var/www/html/exmaple.com/public_html/sub/"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="Shift_JIS,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
HTTP_ACCEPT_LANGUAGE="ja,en-us;q=0.7,en;q=0.3"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="sub.exmaple.com"
HTTP_KEEP_ALIVE="300"
HTTP_REFERER="http://sub.exmaple.com/"
HTTP_USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
PATH="/bin"
QUERY_STRING=""
REMOTE_ADDR="192.168.10.2"
REMOTE_PORT="65356"
REQUEST_METHOD="GET"
REQUEST_URI="/printenv.cgi"
SCRIPT_FILENAME="/var/www/html/exmaple.com/public_html/sub/printenv.cgi"
SCRIPT_NAME="/printenv.cgi"
SERVER_ADDR="192.168.0.2"
SERVER_ADMIN="admin@exmaple.com"
SERVER_NAME="sub.exmaple.com"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.14 (Unix)"
■rewrite
&#60;VirtualHost ]]></description>
			<content:encoded><![CDATA[<p>バーチャルホストが多くなってくると、同じ設定を繰り返すことが無駄に思えて自動化・構造化したくなってくるのが人の情というもの。<br />
バーチャルホストを動的に割り当てる方法には、mod_rewrite で強制的に割り当てる方法と、mod_vhost_alias を使う方法があるけれども、返す環境変数がそれぞれ異なってしまう問題がある。</p>
<p>http://sub.example.com 　を　/home/exmaple.com/plublic_html/sub/　に割り当てる際のバーチャルホスト設定として、下記の３種の方法を試し、その際に返すDOCUMENT_ROOTを取得してみた。</p>
<p>(１)　VirtualHost</p>
<pre>&#60;VirtualHost *&#62;
DocumentRoot /home/example.com/public_html/sub/
ServerName sub.exmaple.com
&#60;/VirtualHost&#62;</pre>
<p>結果</p>
<pre>/home/example.com/public_html/sub/</pre>
<p>(２)　mod_rewrite</p>
<pre>&#60;VirtualHost *&#62;
DocumentRoot /home/example.com/public_html/
ServerName example.com
ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^&#91;^.&#93;+\.example\.com$
RewriteRule (.*) %{HTTP_HOST}$1 &#91;C&#93;
RewriteRule ^(&#91;^.&#93;+)\.example\.com(.*) /home/example\.com/public_html/$1/$2 &#91;L&#93;
&#60;/VirtualHost&#62;
</pre>
<p>結果</p>
<pre>/home/example.com/public_html/</pre>
<p>(３)　mod_vhost_alias</p>
<pre>UseCanonicalName Off
VirtualDocumentRoot /home/%2+/public_html/%1</pre>
<p>結果</p>
<pre>/home</pre>
<p>以上のように、(２)または(３)の設定で、DOCUMENT_ROOTを、(１)の状態で扱うことはできない。<br />
この不具合によって、環境変数を参照するCGIやモジュールに正常な動作は期待できない。</p>
<p>mod_vhost_alias のこの不具合はbugzillaで報告されているが、解消される様子はない。<br />
<a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=26052">https://issues.apache.org/bugzilla/show_bug.cgi?id=26052</a></p>
<p>具体的には下記のように環境変数が異なる。<br />
■vhost</p>
<pre>&#60;VirtualHost *&#62;
        DocumentRoot /var/www/html/exmaple.com/public_html/
        ServerName exmaple.com
&#60;/VirtualHost&#62;</pre>
<pre>DOCUMENT_ROOT="/var/www/html/exmaple.com/public_html/sub/"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="Shift_JIS,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
HTTP_ACCEPT_LANGUAGE="ja,en-us;q=0.7,en;q=0.3"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="sub.exmaple.com"
HTTP_KEEP_ALIVE="300"
HTTP_REFERER="http://sub.exmaple.com/"
HTTP_USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
PATH="/bin"
QUERY_STRING=""
REMOTE_ADDR="192.168.10.2"
REMOTE_PORT="65356"
REQUEST_METHOD="GET"
REQUEST_URI="/printenv.cgi"
SCRIPT_FILENAME="/var/www/html/exmaple.com/public_html/sub/printenv.cgi"
SCRIPT_NAME="/printenv.cgi"
SERVER_ADDR="192.168.0.2"
SERVER_ADMIN="admin@exmaple.com"
SERVER_NAME="sub.exmaple.com"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.14 (Unix)"</pre>
<p>■rewrite</p>
<pre>&#60;VirtualHost *&#62;
        DocumentRoot /var/www/html/exmaple.com/public_html/
        ServerName exmaple.com
        ServerAlias *.exmaple.com
RewriteEngine On
RewriteCond   %{HTTP_HOST}                 ^&#91;^.&#93;+\.example\.com$
RewriteRule   (.*)                         %{HTTP_HOST}$1             &#91;C&#93;
RewriteRule   ^(&#91;^.&#93;+)\.example\.com(.*)  /var/www/html/example\.com/public_html/$1/$2      &#91;L&#93;
&#60;/VirtualHost&#62;</pre>
<pre>DOCUMENT_ROOT="/var/www/html/exmaple.com/public_html/"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="Shift_JIS,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
HTTP_ACCEPT_LANGUAGE="ja,en-us;q=0.7,en;q=0.3"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="sub.exmaple.com"
HTTP_KEEP_ALIVE="300"
HTTP_REFERER="http://sub.exmaple.com/"
HTTP_USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
PATH="/bin"
QUERY_STRING=""
REMOTE_ADDR="192.168.10.2"
REMOTE_PORT="65352"
REQUEST_METHOD="GET"
REQUEST_URI="/printenv.cgi"
SCRIPT_FILENAME="/var/www/html/exmaple.com/public_html/sub/printenv.cgi"
SCRIPT_NAME="/sub/printenv.cgi"
SCRIPT_URI="http://sub.exmaple.com/printenv.cgi"
SCRIPT_URL="/printenv.cgi"
SERVER_ADDR="192.168.0.2"
SERVER_ADMIN="admin@exmaple.com"
SERVER_NAME="sub.exmaple.com"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.14 (Unix)"</pre>
<p>■mod_vhost_alias</p>
<pre>UseCanonicalName    Off
VirtualDocumentRoot /var/www/html/%2+/public_html/%1</pre>
<pre>DOCUMENT_ROOT="/var/www/html"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="Shift_JIS,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
HTTP_ACCEPT_LANGUAGE="ja,en-us;q=0.7,en;q=0.3"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="sub.exmaple.com"
HTTP_KEEP_ALIVE="300"
HTTP_REFERER="http://sub.exmaple.com/"
HTTP_USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)"
PATH="/bin"
QUERY_STRING=""
REMOTE_ADDR="192.168.10.2"
REMOTE_PORT="65512"
REQUEST_METHOD="GET"
REQUEST_URI="/printenv.cgi"
SCRIPT_FILENAME="/var/www/html/exmaple.com/public_html/sub/printenv.cgi"
SCRIPT_NAME="/printenv.cgi"
SERVER_ADDR="192.168.0.2"
SERVER_ADMIN="admin@exmaple.com"
SERVER_NAME="sub.exmaple.com"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.14 (Unix)"</pre>
]]></content:encoded>
			<wfw:commentRss>http://pandora-lab.com/2009/11/08/mod_vhost_alias-%e3%81%8c%e6%99%ae%e5%8f%8a%e3%81%97%e3%81%aa%e3%81%84%e7%90%86%e7%94%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
