- - PR -
URL のスラッシュ補完が動作しない
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-23 15:17
実は気になって調べておりました。 ただしパケットの中身を見て Location がどうなっているのかを確認する手立てに見当がつかず、苦慮している状況です。 ○検証1 クライアントからIEを利用してリバプロにアクセスし、www2のコンテンツをGETする。 ・NW図 CL → WAN → www1 → www2 ・結果 http://www.xxxx.net/modules/news/ は表示できる。 www2 のアクセスログ [23/May/2007:14:53:08 +0900] "GET /modules/news/ HTTP/1.1" 200 20199 " http://www.xxxx.net/modules/news は表示できない。 クライアントのブラウズには ページを表示できません が表示される。 ただしwww2のログを確認すると、301は返っているようだ。 www2 のアクセスログ [23/May/2007:14:53:13 +0900] "GET /modules/news HTTP/1.1" 301 243 " 恐らく、リバプロ (www1) の eth1 (Outside) or eth0 (Inside) で tcpdump -w を実施し、Ethereal を通したら見れるのかな?と試しておりましたが、Location がどうなっているのかまでは確認できていない状況です。 引き続き私の方でも調査を行いますが、アドバイスを頂ければ幸いです。 それでは、よろしくお願いします。 [ メッセージ編集済み 編集者: kozu 編集日時 2007-05-23 15:33 ] [ メッセージ編集済み 編集者: kozu 編集日時 2007-05-23 15:37 ] | ||||||||
|
投稿日時: 2007-05-23 15:46
「tcpdump -w ファイル名」でファイルに出力した上で、Etherealで読み込めばHTTPヘッダ情報が確認できますよ あとIEのエラー画面はどのような情報が出力されていますか? | ||||||||
|
投稿日時: 2007-05-23 15:57
ご指摘の通り、tcpdump -w で下記の情報を得る事が出来ました。 HTTP/1 .1 301 Moved Per manently ただし、body部は見れないんですね。。 Location が実際にはどうなっているのかを確認したかったのですが。
IEには ページが表示できません と返されます。 「ページが表示できません」と返されるのは何かがおかしいですね。。。 もしかして、クライアントからリバプロに対して2度目の GET は実施されていないのでしょうか? あくまでも仮定ですが、Location は http://172.16.1.16/modules/news/ となってる事は考えられますかね? | ||||||||
|
投稿日時: 2007-05-23 16:10
申し訳ない「tcpdump -s 1600 -w ファイル名」でキャプチャすればbody部も見れるはずです。 | ||||||||
|
投稿日時: 2007-05-23 16:13
body 部の確認方法ありがとうございます。
仮定は確信に変わりました orz 一時的にグローバルからの telnet http://www.xxxx.net 80 を www2 へリダイレクトするように設定を変更し、GET /modules/news HTTP/1.0 を実施してみました。 その結果、Location は BalancerMember で指定したローカル IPで記録されておりました。 Location: http://172.16.1.16/modules/news/ 次に BalancerMember http://172.16.1.16 → http://www.xxxx.net に変更した所、正常にアクセスが行えるようになりました。 ※hosts で http://www.xxxx.net = 172.16.1.16 となるように一時的に修正済 対策としては、グローバルから参照できるバックエンドサーバ用のFQDNを2つ追加し、BalancerMember ではローカルIPではなくFQDNで指定するといった所でしょうか。 参りました^^; 対策として、何か良いアイディアはありそうでしょうか? [ メッセージ編集済み 編集者: kozu 編集日時 2007-05-23 16:18 ] | ||||||||
|
投稿日時: 2007-05-23 16:47
mod_proxy_balancerは使用したことがないのでなんとも言えませんが
よく見たら、ProxyPassReverseが記述されていないので、それが原因 ではないでしょうか? ProxyPassReverse / balancer://WebCluster/ を記載したらどうなりますか? [修正] ちょっと調べてみましたが、以下のように記載しないとだめそうです。 ProxyPassReverse / http://172.16.1.15 ProxyPassReverse / http://172.16.1.16 [ メッセージ編集済み 編集者: ゆうじゅん 編集日時 2007-05-23 17:19 ] | ||||||||
|
投稿日時: 2007-05-24 10:15
ゆうじゅん様のクリティカルヒット的なアドバイスで改善する事が出来ました! 本当にありがとうございました! ProxyPassReverse が必要だったとは、迂闊でした。 mod_proxy_balancer は mod_proxy と関わりの深いモジュールである事を考えれば素直に納得です。 動作報告は下記の通りです。 ○動作報告 最終的に、www1 の http.conf を下記のように書き換える。 <VirtualHost 192.168.10.3:80> ServerName www.xxxx.net ServerAdmin xxxx@xxxx.net DirectorySlash On CustomLog /var/log/apache2/access_log_www common ErrorLog /var/log/apache2/error_log_www ProxyRequests Off ProxyPass / balancer://WebCluster/ timeout=2 lbmethod=bytraffic <Proxy balancer://WebCluster> BalancerMember http://172.16.1.15 loadfactor=10 BalancerMember http://172.16.1.16 loadfactor=10 </Proxy> ProxyPassReverse / http://172.16.1.15/ ProxyPassReverse / http://172.16.1.16/ </VirtualHost> ※注意事項 ProxyPassReverse は http://172.16.1.16/ にしないと、Location に余計なスラッシュが含まれてしまうようです ProxyPassReverse / http://172.16.1.16 の場合、 Location: http://www.xxxx.net//modules/news/ となり、 余計なスラッシュが付加される。 一方で。。。 ProxyPassReverse / http://172.16.1.16/ の場合、 Location: http://www.xxxx.net/modules/news/ となり、 意図した通りの挙動となる。 数日に渡りアドバイスを賜り、本当にありがとうございました。 また何かございましたらご相談させて頂きますので、その際にはよろしくお願い致します。 |