2008年6月23日

[Apache-Users 7054] Re: virtual host & proxy

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **

早間です。

> 菊地です。
> >
> > apache のマニュアルに「Virtual_host と mod_proxy を併用する」

> > と言う項目がありました。ここに、「名前バーチャルホスト」と Proxy
> > の設定方法が載っています。この方法でバーチャルホストとProxyの同居
> > が出来ました。
>
> http://httpd.apache.org/docs/2.2/vhosts/examples.html#proxy
> のことでしょうか?これは、リバース・プロクシの話だと思って
> いたのですが、違うのかなぁ?

http://www.example.jp/manual/vhosts/examples.html


AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|pt-br))?(/.*)?$ \
"/usr/share/doc/apache-2.2.9/manual$1"

ですから同じ内容と思います。

---------------------------- ここから ---------------------------
Virtual_host と mod_proxy を併用する

次の例は、フロント側のバーチャルホストで他のマシンへプロクシします。
例では 192.168.111.2 のマシンではバーチャルホスト名は同じ名前で
設定されています。複数のホスト名を一台のマシンにプロクシする 場合は、
ProxyPreserveHost On ディレクティブを使って、希望のホスト名を渡せ
るようになります。

<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://192.168.111.2
ProxyPassReverse / http://192.168.111.2/
ServerName hostname.example.com
</VirtualHost>
---------------------------- ここまで ---------------------------

ProxyRequests on
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.1
ProxyPassReverse / http://192.168.1.1

と無神経に manual の3行を追加しました。難解な表現で理解して
設定したとは言えません。

# 見た、書いた、動いた

>
> 外部アクセスに使うプロクシだと、ServerName がマッチしないので、
> 同じ IP (または *:80 で全ての Listen している IP) の VirtualHost
> で列挙された設定のうち、一番はじめに出ているものが使用されること
> になると思います。

httpd.conf からみると次の順になるので「一番はじめ」とは
言えないと思います。

Listen 80
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost

</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com --> apache は見ているのでしょうか
www.example.com --> 172.16.0.1
(dns の view に関わらず)
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.co.jp

</VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerName www.example.jp

ProxyRequests on
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.1
ProxyPassReverse / http://192.168.1.1
CacheRoot /hdd/cache
CacheDefaultExpire 360000
CacheMaxExpire 360000
CacheMinFileSize 1
CacheMaxFileSize 100000000
CacheEnable disk /
<PROXY *>
Order Deny,Allow
Deny from All
Allow from 192.168.1
</PROXY>
</VirtualHost>
<VirtualHost *:80>
ServerName まだ続きます

</VirtualHost>

> で、そこに ProxyRequests On があると、キャッシュを含む外向け
> プロクシが有効になるかもしれません。さらに、ProxyPreserveHost
> があると、、、どうなるんでしょうね?
>

proxy の目的は
複数台のホストから殆ど同じ時刻に外部のサーバに全く同じファイルの
アクセスをする事が日常頻繁にあります。
外部サーバへのアクセスを同じファイルなら1回だけに押さえる
ことです。(cache が重要)

内部からしかアクセスできないサーバに manual とか MRTG の結果とか
html で供給されている文書へのアクセス それに PROXY の機能を
片っ端から載せています、ホスト名自体が管理用です。

理屈が判ると他の設定変更なども安心して出来るのですが、とりあえず
IP を一つ持たせると動くので(IP をけちる必要は無い)安心です。

-- 早間
--
入退会・変更・配送一時停止は以下へ
http://mm.apache.jp/mailman/listinfo/apache-users


投稿者 xml-rpc : 2008年6月23日 12:05
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/74586
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。