- PR -

squidによるReverseProxyの設定

1
投稿者投稿内容
タカタン
常連さん
会議室デビュー日: 2005/07/16
投稿数: 21
投稿日時: 2006-08-02 15:54
お世話になります。
現在Webサーバの負荷分散と冗長化の為に
SquidでReverseProxyを構築しております。

構成
fedoracore5
squid-2.5.STABLE12-5.1

httpd_accelの設定で1ドメインに対してのReverseProxyの役割は出来たのですが、
現在私のところのWebサーバは1台のサーバで複数のコンテンツが入っています。
1つのProxyで複数のコンテンツ(異なるIP、ドメイン)を補う方法はあるのでしょうか?
また、それぞれのコンテンツへのアクセスログ(squidのaccess.log)等も分けることは可能でしょうか?
ご存知の方おりましたら、アドバイス等いただけませんでしょうか。
お願い致します。

Webサーバ (xxx.xxx.xxx.ooo/24 : apache.test.com)
・xxx.xxx.xxx.xxx : ww.test1.com
・xxx.xxx.xxx.yyy : ww.test2.com
・xxx.xxx.xxx.zzz : ww.test3.com

Proxyサーバ (xxx.xxx.xxx.aaa/24 : squid.test.com)
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-08-03 09:03
squid.confに

http_port 80
cache_dir ufs /usr/local/squid/var/cache 100 16 256
cache_effective_user squid
visible_hostname http://squidw.test.com
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

と設定しておいて、squidが動いているマシン上の/etc/hostsファイルで

xxx.xxx.xxx.ooo apache.test.com
xxx.xxx.xxx.xxx ww.test1.com
xxx.xxx.xxx.yyy ww.test2.com
xxx.xxx.xxx.zzz ww.test3.com

と設定しても駄目ですか?


[ メッセージ編集済み 編集者: 非武装エリア 編集日時 2006-08-03 09:04 ]
タカタン
常連さん
会議室デビュー日: 2005/07/16
投稿数: 21
投稿日時: 2006-08-07 17:27
>非武装エリア 様 
ありがとうございます。
非武装エリア様の設定を入れたところ、うまく動作しました。
ただ、2点ほどうまくいかなかったのがあります。

1点目
>http_port 80
とすると、ユーザsquidはhttp_portを開けることが出来ないとのエラーがでてしまいます。
squidユーザでhttp_portを空けてあげるいい方法はありますでしょうか?
現在は http_port 8080 と仮設定をして検証を行っております。


2点目
>visible_hostname http://squidw.test.com
visible_hostnameには
Squidの動作しているマシン名を定義しておく。との解説がどこかのHPにあったため、
現在私のsquid.confでは
「visible_hostname squid.test.com」
と定義しております。
これで運用していて問題ないのでしょうか?
それとも非武装エリア様のように
 visible_hostname http://squidw.test.com
とアドレスを指定すべきなのでしょうか?
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-08-07 18:28
「visible_hostname squid.test.com」 で正解です。
(私の記述ミスです。ごめんなさい。。。汗!)

>http_port 80

どうやってsquidを起動してますか? 一般ユーザでコマンドプロンプトから直接squidを起動した場合にはこのようなエラーになると思います(ポート番号1024以下はシステム権限のあるユーザでないと利用できませんね)
rcプロセスから起動するか、スーパーユーザ(root)で起動すれば80番でもエラーにならないと思います。
rcプロセスから起動させるなら、http://squid.robata.org/faq_3.html#l-02 の3.6を参照してみてください。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-08-07 22:21
こんばんわ.
引用:

タカタンさんの書き込み (2006-08-07 17:27) より:

>http_port 80
とすると、ユーザsquidはhttp_portを開けることが出来ないとのエラーがでてしまいます。
squidユーザでhttp_portを空けてあげるいい方法はありますでしょうか?
現在は http_port 8080 と仮設定をして検証を行っております。


それは「squid の user 権限だから」と表示されますか?
つい先日も同様のやり取りがあって,
httpd が起動してたりして squid と干渉してた話があったばかりですが,
その辺は大丈夫ですか?
タカタン
常連さん
会議室デビュー日: 2005/07/16
投稿数: 21
投稿日時: 2006-08-08 10:58
非武装エリア 様  kaz 様
ありがとうございます。

squidの起動スクリプトはrootで起動しております。
起動スクリプトに関しては、FC5のパッケージに入っているものから特に変更等してません。
起動スクリプトを編集してrootで起動するようにすれば動くか検証してみます。
ただ、rootユーザでsquidデーモンを動かすとセキュリティ状好ましくないのかなと考えております。

kaz様のご指摘のhttpdデーモンと干渉しているのでは?の件につきましては、
httpdデーモンの起動はしておりません。

squid起動時のログを下記に記述しておきます。

--------squid起動時のエラーログ(/var/log/message)----------------------------
Aug 8 10:37:17 squid squid[17279]: Squid Parent: child process 17308 started
Aug 8 10:37:17 squid kernel: audit(1155001037.430:205): avc: denied { name_bind } for pid=17308 comm="squid" src=80 scontext=root:sys
tem_r:squid_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket
Aug 8 10:37:17 squid (squid): Cannot open HTTP Port
Aug 8 10:37:17 squid squid[17279]: Squid Parent: child process 17308 exited due to signal 6
Aug 8 10:37:17 squid squid[17279]: Exiting due to repeated, frequent failures
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-08-08 21:50
こんばんわ.

先日もありましたが,
もしかして SELinux と干渉してませんか?
1

スキルアップ/キャリアアップ(JOB@IT)