最終更新日: 2004年11月18日
注意: これは、Squid-2.4以前の設定ファイルの解説です。 Squid-バージョン2.5よりここに記述されている設定項目の多くが変更されました。
Squid-2.5以上を利用している場合にはこちらのSquid-2.5用のsquid.confの解説をお読みください。
これは、デフォルトのSquid設定ファイルです。ドキュメンテーションについては、
http://cache.is.co.za/squid/
を、またFAQについては
http://squid.nlanr.net/
のホームページを参照すると良いでしょう。
※squid.confでミスや不明な点を見つけたらメールください。
SquidがHTTPクライアントからのリクエストを受けるポート番号です。標準では3128になっています。また、httpd-accel モードでは 80番ポートを使います。 コマンドラコマンドラインからの起動で -a とともに指定した場合にはこの時の番号が優先されます。
ここに複数のポートを指定しても構いません。 しかし、それらは1行の中で指定してください。
(ex. http_port 8080 8181 8282)
Default : http_port 3128
Squidが隣接のキャッシュサーバとの間で、ICPを送受信するポート番号でデフォルト
は3130です。使用を無効にするには "0" を指定します。 コマンドラインからの起動
で -u とともに指定した場合にはその時の番号が優先されます。
Default : icp_port 3130
Squidが隣接のキャッシュサーバとの間で、ICPリクエストを送受信するポート番号で
デフォルトは 4827 です。 使用を無効にするには "0" を指定します。
Default : htcp_port 4827
このタグは、マルチキャストIPCのリクエストを受け取る為に、このサーバが加わるマルチキャストグループのリストを指定します。
注意: ここへの記述には注意してください。 ICP問い合わせ( ICP_quuery_ )とICP応答( ICP_reply_ ) の違いを理解しておいてください。このオプションは、サーバでマルチキャスト問い合わせを受けたい場合のみセットしてください。
マルチキャストICPを送る為このオプションを設定しないでください。(そのためには、cache_peer を使います。) ICPの応答はいつでもユニキャストで送られます。ですから、このオプションはマルチキャストグループからの応答には効果がありません。
あなたは、他のもう一つのグループによってすでに用いられているマルチキャストアドレスを使わないように注意しなくてはいけません。 NLANRでは、Wabキャッシングの為のマルチキャストアドレススペースのブロックを割り当てています。 あなたが、あなた自身の使用のためのアドレスを受け取るために、[email protected]までメ
ールをください。
もしあなたがマルチキャストについて確信がなければ、どうぞSquid FAQ ( http://squid.nlanr.net/Squid/FAQ/ )でマルチキャスト章を読んで下さい。
使い方 : mcast_groups 239.128.16.128 224.0.1.20
デフォルトで、Squidは、マルチキャスト・グループになにも設定されていません。
使い方 : tcp_incoming_address 10.20.30.40
udp_outgoing_address fully.qualified.domain.name
tcp_incoming_address は、クライアントおよび他のキャッシュからのコネクションを受け取るHTTPソケットに利用されます。
tcp_outgoing_address は、リモート・サーバーおよび他のキャッシュサーバーへのコネクションに利用されます。
udp_incoming_address は他のキャッシュサーバーから受け取るICPソケットに利用される。
udp-outgoing_address は、ICPパケットを他のキャッシュサーバーに送るのに利用されます。
デフォルトでは、ここにはどんなアドレスを指定されていません。
注意:udp_incoming_address と udp_outgoing_addressは同じポート番号3130を使うため、(0.0.0.0を除いて)両方を同じ値にはできません。
# tcp_incoming_address 0.0.0.0
# tcp_outgoing_address 0.0.0.0
# udp_incoming_address 0.0.0.0
# udp_outgoing_address 0.0.0.0
階層キャッシュにおける他のキャッシュサーバーを、次のような書式で指定します。
書式:
hostname type http_port icp_port
例えば:
# proxy icp
# hostname type port port option
# ----------------------------------------------------------------------
# cache_peer parent.foo.net parent 3128 3130 [proxy-only]
# cache_peer sib1.foo.net sibling 3128 3130 [proxy-only]
# cache_peer sib2.foo.net sibling 3128 3130 [proxy-only]
type: parent(親)、 sibling(兄弟姉妹)、またはmulticast
proxy_port: キャッシュサーバーがproxyの要求を受けるポート番号
icp_port: オブジェクトについて隣接キャッシュサーバーに問い合わせる時のポートnon-ICPの隣接キャッシュの為には、ICPポートには「7」を明示して、隣接マシンの/etc/inetd.confファイルでUDPエコー・ポートを有効にさせていることを確かめて下さい。
options:proxy-only
weight=n
ttl=n
no-query
default
round-robin
multicast-responder
closest-only
no-digest
no-netdb-exchenge
no-dwlay
proxy-only オブジェクトをこnキャッシュサーバーから取得後、オブジェクトをローカルに保持しません。
**********
weight=n 親キャッシュサーバーへのウェイト(優先度)を整数で指定します。デフォルトは1で大きな値ほど優先されます。ttl=n このアドレスにICPリクエストを送るときに、使う(べき) IPマルチキャストTTLを明示するために、「ttl = n」を使って下さい。マルチキャストグループに送る場合にだけ役立ちます。指定したホスト以外からのICP応答は受け取らない為、以下の“multicast-responder”オプションで他のグループメンバーで構成を指定しなくてはいけません。no-query “no-query”を使うと、隣接のキャッシュサーバーへICP要求を送りません。
default “default”を使うと、最後の拠り所として使うキャッシュサーバとして指定します。他の親キャッシュとICPを使うことができない場合に、用いられることになるでしょう。
round-robin ICP応答がない場合に、指定された親サーバーを巡回的に探します。
multicast-responder マルチキャストグループであることを示します。ICP要求は相手には直接送られませんが、ICP応答は返ってくるでしょう。
closest-only ICP_OP_MISSの応答の為に、CLOSEST_PARENT_MISSとFAERST_PARENT_MISSをフォワードすることを示します。
no-digest 指定すると、この隣接キャッシュサーバーからキャッシュダイジェストを要求しません。
no-netdb-exchenge 隣接のキャッシュサーバーからのICP RTTデータベース要求を無効にします。
no-dwlay delayプールによって、隣接サーバーへのアクセスが送れることを防ぎます。
login=user:password 認証の仕組みを持った隣接プロキシの場合に使います。
注意:ICPサーバでない隣接サーバは“parent”として設定してください。
# cache_peer hostname type 3128 3130
隣接キャッシュサーバーが要求されるドメインに制限を設けるときに使用します。
Usage:
cache_peer_domain cache-host domain [domain....]
cache_peer_domain cache-host !domain
使用例:
cache_peer_domain parent.foo.net .edu
".edu"ドメインについてparent.foo.netにUDP要求を行います。ドメイン名の先頭に"!"を付けると、そのドメイン以外の問い合わせを行うことになります。
注意:
* 1つのcache-hostに複数のドメインを与えることもできますし、それぞれを複数の行に分けることもできます。
(訳者注:ドメインを1行で指定することも可能で、また複数のcache_peer_domainステータスを記述することもできるという意味と思います。)
* 複数のcache-hostにマッチするドメイン名がある場合には、最初にマッチしたcache-hostが適用されます。
* ドメインの制限がないキャッシュホストにはすべての要求が渡されます。
* 如何なるデフォルトもありません。
* ACLセクションの“cache-peer-access”も参照してください。
使用方法: neighbor_type_domain parent|sibling domain...
特定のドメインの為に、cache_peerで設定した隣接キャッシュのタイプと違うタイプに変更することが可能です。普通では、ドメインに対してデフォルトのキャッシュホストと違う隣接キャッシュタイプを使いたい場合に指定します。
使用例:
cache_peer parent cache.foo.org 3128 3130
neighbor_type_domain cache.foo.org sibling .com .net
neighbor_type_domain cache.foo.org sibling .au .de
Squidは普通、最近のICP要求によって自動的に迅速な要求のタイムアウトの値を決定します。もしこの値をユーザが決定したい場合には、"icp_query_timeout"をゼロ以外の数値で設定します。この値にはミリ秒単位で設定します。ですからこれを2秒(古いデフォルト値)にするには、
icp_query_timeout 2000
とします。
# icp_query_timeout 0
このコントロールはSquidがpeerキャッシュが無反応と判断する時間を秒で指定します。
もし、この時間たってもICPに応答がない場合には、Squidはこれを無反応か、とてつもない遠方にあるものと判断するでしょう。
しかし、継続されたICPに対して反応があり次第、生きているものとしてマークされます。
このタイムアウトまた、peerキャッシュからのICP応答に対する予想に影響します。もし最後のICPリプライが受け取られたとき以来、「dead_peer」秒以上が過ぎたら、Squidは、次の質問でICP答えを受け取ることを予想しないでしょう。このように、もし要求の間でのSquidの時間がこのタイムアウトよりも大きければ、Squidは親の替わりに、起源サーバーへ直接要求するでしょう。
# dead_peer_timeout 10 seconds
このリストに記述されたワードがURLの中に見つかると、隣接キャッシュではなく直接サーバにリクエストを行います。隣接キャッシュを使いたくないオブジェクトのために使ってください。
このオプションは複数回指定できます。デフォルトは、'cgi-bin'と'?'を含むURLの場合に直接オブジェクトを持ってきます。
# hierarchy_stoplist cgi-bin ?
キャッシュしたいオブジェクトの為に、ACLエレメントをリストします。
あなたは、キャッシュされるべきでないACL名前を示すために、語「DENY」を使わなくてはいけません。
いかなるデフォルトもありません。
以下に2つの例をコメントで記述しておきますので、このコメントを外すことを薦めます。
# acl QUERY urlpath_regex cgi-bin \?
# no_cache deny QUERY
注:これは、ACLとして'QUERY'というエレメントを定義して、このエレメントの実体は、URLの中を正規表現で比較し、"cgi-bin"と"?"があるかを比較します。そして、no_cacheを否定しない(つまりno_cacheする)エレメントとしてQUERYを指定しています。
NOTE:このパラメーターは、プロセスのサイズの制限ではありません。それは、Squidのメモリー使い方の限界に関する1つの様相にすぎません。Squidは、この値を複数の状況に合わせて使います。プロセスは次の2つまたは3つの状況に状況に適するようにメモリを配置します。
「chace_mem」は以下のような状況によってよ使われるべきメモリーの理想の総量を明示します:
*In-Transit(転送中)のオブジェクト
*Hot(ホット)のオブジェクト
*Negativ(ネガティブ)オブジェクト
(訳者注)
私なりにこの意味を考えてみると、
In-Transit --- いままさにWWWサーバから読み込んでいるデータ
Hot --- 以前(数秒? 数分?)前に読み込んだデータ
Negatuiv --- In-TransitでもHotでもないデータ
では無いかと想像します。(詳しくはだれかソースを調べてください(^_^;))
これらのオブジェクトのためのデータは、4KBブロックで保存されます。このパラメーターの上限は、総サイズを4KBブロック単位で割り切れる値を指定します。輸送中オブジェクトは高い優先度になっています。
輸送中オブジェクトは他のオブジェクトより優先度が高いので、新たに入ってきたデータのためにスペースが必要になると、ホットオブジェクトとネガティブオブジェクトは破棄されます。つまり、ホットオブジェクトとネガティブオブジェクトは。転送中オブジェクトが使っていないスペースを使っているだけといえます。
もし状況が要求すれば、この限界は拡張されるでしょう。
明確に、もしあなたの入力要求割合が、保持するためにメモリーの「cache_mem」以上の転送中オブジェクトを要求すれば、新しい要求を満足させるために、この限界を超過するでしょう。ロードが減れば、このブロックはフリーとなって、その後、ブロックは、Hotオブジェクトを保存するために使われるでしょう。
cache_mem_lowとcache_mem_high(後述)の値は、メモリー・プールの使用をチューニングするために使うことができます。上限に達すると、転送中オブジェクトとHotオブジェクトのために捨てられます。転送が完了し現在のメモリが下限以下の時のみ、そのオブジェクトはメモリに残ります。
デフォルトは8Mbyteです。
#cache_mem 8MB
LRU置き換えのための上限値と下限値です。LRU置き換えは、上限値になると開始され十分なオブジェクトが削除され下限値になるまで行われます。 デフォルトでは、この範囲は90%から95%です。もしあなたのが大きいキャッシュであれば、5パーセントは数百MBかもしれません。もしそのようなケースなら、この範囲をより近くすると良いでしょう。
# cache_swap_low 90
# cache_swap_high 95
これらはキャッシュメモリ領域の上限と下限値です。RAM総量の内、Hotオブジェクトのキャッシュ量が範囲を使い切ったとき、オブジェクトをキャッシュから追い出し始めます。(しかし、それらはディスクに残ります)。デフォルトは、75パーセントから90パーセントです。
# cache_mem_low 75
# cache_mem_high 90
オブジェクトがこのサイズより大きい場合には、ディスクで保存されないでしょう。値は、キロバイトで指示します。 デフォルトは4MBです。もし高いバイト・ヒット比率を得たいと思えば、あなたはたぶんこれを増やすべきです(1つの32MBのヒットは、3200個の10KBヒットと同じ意味を持ちます)。あなたがもっと回線の帯域を増やしスピードを増やしたいと思うかなら、この値を増やすと良いでしょう。
# maximum_object_size 4096
IPキャッシュの数と上限値、下限値の指定
# ipcache_size 1024
# ipcache_low 90
# ipcache_hhigh 95
FQDNのキャッシュエントリ数の最大数 (注:ドメイン名の数)
# fqdncache_size 1024
使い方:
cache_dir Directory-Name Mbyte Level-1 Level-2
あなたは、異なるディスク・パーティションへキャッシュするために、複数のcache_dirを指定することができます。
「ディレクトリー」は、キャッシュ・スワップ・ファイルが保存されるディレクトリーです。もしあなたがキャッシュのためにディスク全体を使いたければ、ここに、マウントポイントのディレクトリーを指定すると良いでしょう。ディレクトリーは、存在してSquidプロセスによって書き込みできなくてはいけません。
Squidは、勝手にこのディレクトリーを作り出すことはしません。もし、いかなる「cache_dir」ラインも明示されなければ、以下のディレクトリがデフォルで使われるでしょう
Defauult: /var/spool/squid
「Mbyte」は、このディレクトリーの下で使うべきディスク・スペースの量(MB)です。デフォルトは100MBです。これをあなたの構成に合わせて変えて下さい。
「Level-1」は、「ディレクトリー」の下に作り出されるだろう最初のレベルのサブディレクトリーの数です。デフォルトは16です
「Level-2」は、それぞれの最初のレベル1・ディレクトリーの下に作り出されるだろう第2レベルのサブディレクトリーの数です。デフォルトは256です。
# cache_dir /usr/local/squid/cache 100 16 256
ここにクライアントからの要求を記録します。すべてのHTTPとICPのための要求のを含みます。
# cache_access_log /usr/local/squid/logs/access.log
Squidのログ記録ファイルを指定します。
これは、あなたのキャッシュの振る舞いについての一般情報が記録されます。あなたがこのファイルに記録する情報を増やすことができます。その場合には「debug_option」タグを参照してください。
# cache_log /usr/local/squid/logs/cache.log
ストレージ・マネージャーの活動を記録します。 キャッシュから削除されたオブジェクト、ファイルに保存されたオブジェクト、またはオブジェクトがどれくらいの期間を保存されたかが記録されます。 無効にしたい場合には "none" を指定します。 これらのデータを分析するユーティリティが実はありません、したがって、無効にすることであなたは安全を得られます。
# cache_store_log /usr/local/squid/llogs/store.log
キャッシュの"swap.log"の場所を指定します。 このログ・ファイルは、ディスクにオブジェクトのメタデータを保持します。 それを使ってスタートアップの間にキャッシュを再構築します。 普通、最初はこのファイルは、"cache_dir"のディレクトリーに存在します、 しかし、ここでパス名を指定することで交代できます。 ここへの指定はディレクトリではなくフルパスネームであることに注意してください。 これが全体のオブジェクト・リストのためのインデックスであるので、定期的にそれを移動させることはできません!
# cache_swap_log
squidでは、ログファイルの形式として多くの "httpd" プログラムが使うログ・ファイル形式をエミュレートすることができます。 このエミュレーションを無効/有効にするための指定を"off"、"on"を指定します。デフォルトでは、Squidに特有のログ形式で記録されるように"off"になっています。
# emulate_httpd_log off
Squidで使うMIMEテーブルへのパス名を指定します。あなたは、これを変える必要がありません、しかし、もしすれば、デフォルトファイルを参考に、編集することがあるかもしれませんので、そのときにこのパラメータを使うと良いでしょう。
# mime_table /usr/local/squid/etc/mime.conf
Squidは、要求とHTTPトランザクションのMIME応答ヘッダーの両方を記録できます。ヘッダーは暗号化され安全で、access.logの最後に2つの括弧でくくられたフィールドとして見えるでしょう。(ネイティブまたはhttpdをエミュレートされたログ形式) そうするためにはこのパラメータを"on"にします。
# log_mime_hdrs off
もし、configure(コンパイル時)に"--enable-useragent_log"のオプションを付けて構成されたなら、SquidはHTTP要求からのUser-Agentフィールドを指定されたファイルへ記録します。デフォルトで、useragent_logは無効にされます。
# useragent_log none
squidのプロセスIDを指定のファイルへ記録します。 無効にする場合には"none"にします。
# pid_filename /usr/local/squid/logs/squid.pid
デバッグログの記録オプションを section,level の形で指定します。これらは各ソースファイルで固有のセクションを割り当ててあります。levelを低くすると記録が少なくなります。フルデバック(level 9)にすると記録が大変大きくなりますので注意してください。 セクションとして"ALL"を指定でき、この場合すべてのsectionに対してデバッグLevelが設定されます。 普通は"ALL,1"で実行してください。
# debug_options ALL,1
もしあなたがクライアントからの接続において、クライアントのユーザ名をRFC931/identを用いて調べる場合に"on"にしてください。デフォルトは"off"です。
# ident_lookup off
もしあなたが、access.logへの記録でfully qualified domain name(FQDN)でマシン名記録したい場合に有効にします。このとき、DNSの検索が行います。これは、待ち時間を(いくつかの状況で)、増やすことにつながります。(あなたのキャッシュはインタラクティブなブラウジングにとってより遅いことになります。)
# log_fqdn off
ログファイルとキャッシュマネージャの出力に記録するクライアントのアドレスのためにネットマスクを設定します。 もしあなたのキャッシュクライアントのプライバシーを守るなら、これを変更してください。 netmaskとして255.255.255.0を使うと、ログにはこのネットマスクの範囲のマシンのアドレスの最後を"0"にして記録します。
# client_netmask 255.255.255.255
もしあなたが、Anonymous-FTPサーバへのパスワードに" [email protected]" のようなルールに合った情報を与えるならこれをセットしてください。(細かいことに口やかましいftpサーバーの使用を可能にするでしょう)
下記のようにデフォルトでドメイン名を付加しないのは、どんなドメインでユーザーでも利用できるようにするためです。ある種のftpサーバーは、Eメールのアドレスが有効であることを検証 ( 例えば perl.com) します。
# ftp_user squid@
ftp一覧の幅をセットします。これは、スタンダードのブラウザの幅に収まるあるべきです。ftpサイトをブラウズするときに、これに合わせた形で長いファイル名を切りとることができます。
# ftp_list_width 32
dnslookupプロセスのため、プログラムのパスを明示します。
# cache_dns_program /usr/local/squid/bin/dnsserver
DNS検索プログラムを起動する数を指定します。大規模なサーバではsquidのためにたぶん、最低10へ値を増やす方が良いでしょう。最大は32まで指定できます。 デフォルトは5です。
# dns_children 5
通常、DNSサーバはRES_DEFNAMEオプションを無効にしています。(res_init(3)参照))
これは、squidの階層のキャッシュにおいて、ローカル環境で使われるような単純なホスト名を解釈するのを防ぎます。 dnsserverで単純なホスト名を取り扱うことを可能にするために、このオプションを可能にして下さい。
# dns_defnames off
もし、/etc/resolv.confで与えたDNSサーバのIPアドレス以外のアドレスを使うなら、ここへ指定してください。
例: dns_nameservers 10.0.0.1 192.172.0.4
# dns_nameservers none
削除プログラムのパスを指定します。もしそれがスレッドによって取り扱われ、非同期ioを使っていれば、これは必要とされません。
# unlinkd_program /usr/local/squid/bin/unlinkd
pingerプログラムのパスを指定します。 もしSquidをconfigure(コンパイル時)する際に、"--enable-icmp"オプションを指定した時にこの指定は有効です。
# pinger_program
URLリダイレクトのためのプログラムのパスを指定します。このプログラムは組み込まれていません。必要なら、リリースノートをみて作成してください。デフォルトで、redirectorは使われません。
# redirect_program none
TAG: redirect_children
redirectorプロセスの数を指定します。これを少なくすると、squidは遅くなるかURLのバックログが遅くなるでしょう。多くするとシステムのリソースやRAMが沢山必要になります。
# redirect_children 5
By default Squid rewrites any Host: header in redirected requests. If you are running a accelerator then this may not be a want effect of a redirector.
# redirect_rewrites_host_header 0n
TAG: authenticate_program
外部の認証用プログラムを指定します。 このようプログラムは"ユーザ名 パスワード"を入力させたり、"OK"や"NG"を返したりそれらをエンドレスに繰り返します。認証を使う場合には、あなたはproxy_authタイプのACLを持っていることを確認してください。 デフォルトでは認証プログラムを使いません。
もし、あなたが代表的なプロキシ認証を行いたいのあれば、../auth_modules/NCSAディレクトリーに移動して、
% make
% make install
を実行してから、次のような行を追加します。
# authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd
# authenticate_program none
認証プロセスの数を指定します(デフォルトは5)。 これを少なくするとSquidは認証に時間がかかるでしょう。 認証に時間がかかる場合にはこの数値を上げる必要があるでしょう。
# authenticate_children 5
検査したユーザ名とパスワードの組み合わせはこの時間だけキャッシュされます。(デフォルトで 3600 (秒?))。
キャッシュされているユーザがパスワードを間違えると、再確認されるまでキャッシュからユーザー名/パスワードが削除されます。
# authenticate_ttl 3600
WAISリクエストをhost(最初の指定)のport(2番目の指定)にリレーします。
# wais_relay_host localhost
# wais_relay_port 8000
リスエストできる最大サイズをキロバイトで指示します。 もし人々がファイルをアップロードするためにPOSTを使いるなら、最大サイズからさらに少々大きめにしたkbyteにする方が良いでしょう。
# request_size 100KB
使い方: refresh_pattern [-i] regex min percent max [option]
デフォルトで、正規表現(regex)は、大/小文字の区別があります。それを無効にするなら、-i オプションを使って下さい。
最小(min)と最大(max)は分を指定し、パーセント(percent)は整数を指定します。
オプション(options): 「満期の無効化」
override-lastmod
reload-into-ims
ignore-reload
「満期の無効化」は、たとえ数分しか経過していないものであっても、キャッシュの満期としてしまいます。これは、HTTPの標準ではありません。これを有効にする場合には、それが引き起こす問題の責任はあなたにあります。
override-lastmod は最近変更されたばかりのオブジェクトであっても、強制的に満期にしてしまいます。
reload-into-ims は、クライアント上でキャッシュされていない場合や"リロード"における If-Medified-Since リクエストにおいて満期としてしまいます。これは、HTTPの標準ではありません。これを有効にする場合には、それが引き起こす問題の責任はあなたにあります。(訳者注:普通はSquidのキャッシュ上にある場合にはそのデー
タがクライアントに渡されるが、これを指定することで必ずサーバへアクセスが発生します)
ignore-reload は、クライアント上でキャッシュされていない場合や"リロード"の要求を無視します。これは、HTTPの標準ではありません。これを有効にする場合には、それが引き起こす問題の責任はあなたにあります。
どうぞ、ドキュメントのReleas-Notes-1.1.txtをご覧下さい。そこのSquidのリフレッシュに関するアルゴリズムや書式が記載されています。 基本的に、キャッシュされたオブジェクトは:(1.1バージョンから変更・整理されました。)
age > max の場合は古い expires < now の場合は新しく、それ以外の場合には古い(訳者注:Releas-Notes-1.1.txtでは、expires <= now の場合は古い。それ以外の場合には新しいとなっており、ロジックから考えるとReleas-Notes-1.1.txtの方が正しい思います。) lm-factor < percent の場合は新しく、それ以外の場合には古いage < min の場合には新しい上記以外の場合には古い
refresh_patternを複数記述した場合、最初にマッチした条件で設定がチェックされ、条件にマッチしない場合にはデフォルトのパターンが使われます。
(訳者注:) Releas-Notes-1.1.txt によると、
age = NOW - OBJECT_DATE :
NOWは今現在の時間。
OBJECT_DATEはオブジェクトがキャッシュに格納された時間。つまりageはキャッシュに格納されているオブジェクトに対する今現在までの経過時間を意味しているようです。ですから最初の条件は、キャッシュされているデータがMAX時間経過すると古いと判断しています。
expires は(WWW)サーバが応答ヘッダーに付加してきた有効時間のようです。2番目の条件は、相手のWWWサーバから送られてきたデータに付加されていたexpires時間が現在の時間より小さい場合には有効期間を過ぎているので古いと判断するようです。
lm-factor < percent:
lm-factor = age / LM_AGE。
LM_AGE = OBJECT_DATE - LAST_MODIFIED_TIME。
LAST_MODIFIED_TIME はオブジェクトが作者によって最後に変更された時間。
つまり、LM_AGEはキャッシュされているオブジェクトが実際に作成されてからキャッシュされたまでの経過時間(要はどれだけ古い内容なのかを意味する)
lm-factorはキャッシュされたオブジェクトの現在までの生存時間を実際に作成された時からの経過時間で割ったものになるので、作成された日付が古ければ古いほどlm-factorの値は小さくなる。
でこのlm-factorをpercent で比較してpercent より小さいものを新しいと判断するようです。ですからpercent を大きくすればするほどキャッシュに古い内容が残ります。(ただしmaxを越えることはできない)
また、lm-factorは更新されているかどうかに影響されるので、頻繁に更新されているオブジェクトはlm-factorの値が大きくなるので、キャッシュに残る可能性が低くなります。
age < min は、キャッシュ期間がminより小さい場合は新しいと判断するようです。
# Default:
# refresh_pattern . 0 20% 4320
Squidではキャッシュされたオブジェクトの削除はLeast Recently Used(LRU:利用頻度の少ないもの)によって行います。LRUによる削除はディスク中の使用中の総量を動的に計算して行われます。動的な値は、キャッシュ・マネージャー「情報」アウトプットで見ることができます。
「reference_age」パラメータは、最大限のLRUを定義します。例えば、これを"1 week"とすると、1週間以上アクセスがなかったオブジェクトが削除されることでしょう。デフォルト値は1ヶ月です。
指定は数字の指定の後に、時間のユニットが続きます。例えば:
1 week
3.5 days
4 mounths
2.2 hours
# reference_age 1 mounth
Squidは中断(アボート)のリクエストがあったでも、キャッシュへのダウンロードを継続します。このことは、遅い回線(例えばSLIPのような)ではキャッシュに重い負荷がかかってしまい好ましくないかも知れません。 短気なユーザーは、繰り返してリクエストしてただちにダウンロードをアボートすることによって、ファイル記述子、および回線の帯域幅をつぶしてしまう可能性があります。
ユーザのアボートリクエストの場合Squidは、それまでにダウンロードされたデータの量と、 quick_abort に指定された値によって判断します。
もし転送してきているデータが残っていて「quick_abort_min」で指定されたKBよりも小さければ、最後まで取り出すでしょう。「quick_abort_min」へ -1 を設定すると、クイックアボートは無効になります。
もし転送してきているデータが残っていて「quick_abort_max」で指定されたKBよりも大きければ、ダウンロードは終了します。
もし転送してきているデータが残っていて「quick_abort_pct」で指定されたパーセントまで進んでいたならダウンロードを最後まで継続して終えるでしょう。
# quick_abort_min 16 KB
# quick_abort_max 16 KB
# quick_abort_pct 95
失敗したリクエストのTime-to-Live(TTL)です。 失敗した(例えば"connection refused"や"404 Not Foound"のような)正常でないキャッシュは、少しの時間だけキャッシュされます。デフォルトでは5分です。 注意: これはDNS検索のネガティブキャッシュとは違います。
# negativ_ttl 5 minutes
成功したDNS検索を積極的にキャッシュするためのTTL時間を指定します。デフォルトでは6時間(360分)です。 もしあなたがSquidのIPキャッシュの使用を最小限にしたければ、0ではなく1にこれをセットして下さい。
# positiv_dns_ttl 6 hours
失敗したDNS探索のキャッシをどれだけ生存させるかの時間( TTL )です。
# negative_dns_ttl 5 mminutes
ファイルへの範囲リクエストのとき、Squidでの範囲移動の上限をどのくらい遠くにするかを指定します。この限界を越えてとすれば実際は、Squidは範囲リクエストをフォワードします、そして、結果はキャッシュされません。
これは、遠い範囲リクエストを(17MB後からスタートさせろとかの..)受けると、Squidは、クライアントに何かを送る前にそのポイントまでの全体のオブジェクトをフェッチして作るため、それを止めるためです。
値として -1 を指定すれば、Squidはいつでもオブジェクトを最初からフェッチしてキャッシュする原因になります。(Ver 2.0からのスタイル)値として0は、Squidはクライアントがリクエストしたフェッチをしません。 (デフォルト)。
# range_offset_limit 0KB
いくつかのシステム(特にLinux)は、connect(2)(システムコール)が適切にタイムアウトを検出できません。それゆえにSquidプロセスは、サーバー・コネクションでそれ自身のタイムアウトを強制します。 このための待つ時間の長さを調節するパラメータです。デフォルトは、2分(120秒)です。
# connect_timeout 120 seconds
For URN to multiple URL's URL selection
# siteselect_timeout 4 seconds
read_timeoutは、サーバー側コネクションで適用されます。read ()の成功後のタイムアウトをこの量によってすることが出来ます。 もしデータがこの秒数を経過しても読み込まれなかった場合には、リクエストはアボートし、ERR_READ_TIMEOUTでログされます。デフォルトは15分です
# read_timeout 15 minutes
接続が確立後、HTTPリクエストをどのくらいの時間待っているかを指定します。頑固なコネクションのために、前のリクエストが完了するまで、この時間待っています。
# request_timeout 30 seconds
クライアント(ブラウザ)がキャッシュプロセスとの間で接続しているコネクションの生存時間を指定します。 適切にコネクションを閉めずに(ネットワーク失敗のために、またはクライアント実装のために)離れて行ったリモート・クライアント(ブラウザ)によって、CLOSE_WAIT状態でキャッシュのソケット(ファイル記述子)が使われてしまい、キャッシュが重くなってしまいます。これを切断するためのパラメータです。デフォルトは、1日、1440分です。
注:デフォルト値は、どんなクライアントがつながっても良いように大き目な値が設定されています。あなたは、最後の手段としてのみclient_lifetimeの値を変えるようにしてください。
もしあなたがファイル記述子を多く使っているような場合には、まず、read_timeout,request_timeout, pconn_timeout,quick_abortのパラメータの値を最初に変えることを私たちはお勧めします。
# client_lifetime 1 day
いくつかのクライアントは受信側をオープンにしたままで、TCPのコネクションをシャットダウンしてしまうかも知れません。
ときどき、Squidは、半分が閉じたことと完全に閉じられたTCPコネクションとの違いを判ることができません。デフォルトで、ソケットのread(2)、あるいはwrite(2)がエラーを返すときまで、半分が閉じたクライアント・コネクションは、開いているままにされます。このオプションを「オフ」に変えて下さい、そしてread(2)が「これ以上の読む(べき)データ」を返さないときに、Squidは、ただちにクライアント・コネクションを閉じるでしょう。
# half_closed_clients on
サーバー、および他の代理への空費する頑固なコネクションのためのタイムアウト。
# pconn_timeout 120 seconds
SIGTERM、あるいはSIGHUPが受け取られるときに、活動的なソケットが閉じられるときまで、Squidは「シャットダウン ペンディング(shutdown pending)」モードに置かれます。これは、オープンされている記述子のためにセットするべき、シャットダウンするまでの時間です。すべてのアクティブなクライアントはこの時間の後に、「タイムアウト」のメッセージを受けるでしょう。
# shutdown_lifetime 30 seconds
アクセス・リストを定義する
acl aclname acltype string1 ...
acl aclname acltype "file" ...
「file」を使うときに、これらのファイル中には、1ラインに1項目を記述します。
acltype には、src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser userのうちから1つを選びます。
acl aclname src ip-address/netmask ... (クライアントIPアドレス)
acl aclname src addr1-addr2/netmask ... (範囲内のアドレス)
acl aclname dst ip-address/netmask ... (URLホストのIPアドレス)
acl aclname srcdomain foo.com ... # リゾルバで検索するクライアント
acl aclname dstdomain foo.com ... # リゾルバで検索するURLサーバ
acl aclname srcdom_regex xxx ... # 正規表現でのクライアント名
acl aclname dstdom_regex xxx ... # 正規表現でのURLサーバ名
# もし、URLにIPアドレスを指定された場合、dstdomain や dstdom_regex の
# ためにリゾルバ(逆引き)が試され、名前が無い場合には"none"が使われます。
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
day-abbrevs:
S ? Sunday
M ? Monday
T ? Tuesday
W ? Wednesday
H ? Thursday
F ? Friday
A ? Saturday
h1:m1 は h2:m2よりも小さくすること。
acl aclname url_regex ^http:// ... # URLの中から正規マッチング
acl aclname urlpath_regex \.gif$ ... # URL中のパスの正規マッチング
acl aclname port 80 70 21 ...
acl aclname port 0-1024 ... # 指定した範囲
acl aclname proto HTTP FTP ...
acl aclname method GET POST ...
acl aclname browser regexp
acl aclname ident username ...
# ident(署名?)出力の文字列をマッチする。
# REQUIREDを使用すると空でないどんなidentでも信用する。
acl aclname src_as number ...
acl aclname dst_as number ...
# Except for access control, AS numbers can be used for
# routing of requests to specific caches. Here's an
# example for routing all requests for AS#1241 and only
# those to mycache.mydomain.net:
# acl asexample dst_as 1241
# cache_peer_access mycache.mydomain.net allow asexample
# cache_peer_access mycache_mydomain.net deny all
acl aclname proxy_auth username ...
# 有効なユーザ名のリスト。
# どんなユーザを受け入れるか要求する際に使用されます。
# 注意:
# Proxy-Authentication ヘッダーでのアクセスの時、 access.logには、ログインが完
# 了するまでACLでのチェックした名前は記録されない。
# 注意:
# proxy_authのリクエストは、外部の認証プログラムでユーザ名とパスワード
# をチェックする。(authenticate_program を参照のこと)
#
# 警告:
# proxy_authは、透過プロキシを使うことができません。
# それは、起源サーバーによってされたいくらかの(どんな)認証と衝突します。
# 最初は動いているように見えても、動かなくなります。
# 例:
# acl myexample dst_as 1241
# acl password proxy_auth 300
#
# Defaults:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 1025-65535
acl CONNECT method CONNECT
定義されたアクセスリストによるアクセスの許可・不許可
HTTPポートへのアクセス:
http_access allow|deny [!]aclname .....
ICPポートへのアクセス:
icp_access allow|deny [!]aclname .....
デフォルト値に関する注意:
いかなる"access"の行がなければ、デフォルトではリクエストは許可される筈です。
もし、"access"の行が記述されている場合に、条件にマッチする行がなかった場合には、デフォルトでは最後のラインの条件の反対条件におなります。もし行の最後が否定(deny)であればデフォルトは許可(allow)に、逆にもし最後の行が許可であればデフォルトは否定になります。混乱を避けるため、あなたはアクセスリストの最後で、すべても許可、または否定するエントリを定義しておくと良いでしょう。
# デフォルトの定義:
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#
# ここにあなたたちのクライアントからアクセスさせるためのルールを挿入しなさい。
#
http_access deny all
# すべてのICPリクエストを受け付ける。
icp_access allow all
# 親ではなく隣接の兄弟サーバを使うように強制します。
# 例えば:
acl localclients src 172.16.0.0/16
miss_access allow localclients
miss_access deny !localclients
とした場合、ローカルクライアントだけがMISSでも取得でき、それ以外はHITの場合のみ取得できます。
デフォルトでは、http_accessのルールをパスしたクライアントならば、MISSの場合でも取得できるようになっています。
# miss_access allow all
'cache_peer_domain'に似ていますが、、ACLを使うことでもっと柔軟が与えられます。
cache_peer_access cache-host allow|deny [!]aclname
この文法は、ACLのリストとともに'http_access'と同じです。 'http_access'の部分のコメントを参照するか,SquidのFAQを見て下さい。(http://squid.nlanr.org/Squid/FAQ/FAQ-10.html)
proxy認証のためにクライアントにレポートされる名前の範囲を指定します。(ユーザーが入力を促された場合にはそれらはユーザー名、およびパスワードの一部としてテキストをみるだろう。)
# proxy_auth_realm Squid proxy-caching web server
キャッシュサーバが死んだときにメールを受け取るローカルのキャッシュマネージャーのe-mailアドレスを指定。デフォルトでは、"webmaster"
# cache_mgr webmaster
もしキャッシュサーバがrootのアカウントで実行されたなら、UIDとGIDを指定したものに変更して実行されます。デフォルトでは、UIDは"nobody"で、GIDは"nogroup"です。
# cache_effective_user nobody
# cache_effective_group nogroup
もしsquidが"root"としてスタートされなければ、UIDとGIDはキープされます。
注意:"root"以外でスタートした場合、http_portをセットするにはUIDが1024以下でないといけない事に注意してください。
もしあなたがエラーメッセージ、etc、で特別のホストネームを与えたければその時これを定義して下さい。そうでないときは、gethostname ()の戻り値が使われるでしょう。もしクラスターの複数のキャッシュがあってエラーを得れば、IP転送について、あなたは、この設定をもつ個々の名前をそれらをセットしなくてはいけません。
# visible_hostname www-cache.foo.org
もしその時同じ「visible_hostname」をもつ複数のマシンを持っていたければフォワーディングループが見つけることができるように、あなたは、それぞれのマシンに異なる「unique_hostname」を与えなくてはいけません。
# unique_hostname www-cache.foo.org
#このセクション(任意である)は、キャッシュ・アナウンス・サービスのためのパラメーター#を中に持ちます。このサービスは、キャッシュ階層を結合するかまたは作り出すために、キ#ャッシュ・アドミニストレーターが互いの位置を定めるのをヘルプするのに用意されます。
#
#「announcement」メッセージは、(UDPによって)Squidの登録サービスに送られます。
#あなたが以下の「announce_period」でそれを可能にすることがない限り、デフォルトでは
#annoucementメッセージは送られません。
#
#アナウンス・メッセージにはあなたのホストネームと以下のインフォメーションを加えたも
#のが構成ファイルには含まれます:
# http_port
# icp_port
# cache_mgr
#最新情報は定期的に改訂されており、WEBの「http://ircache.nlanr.net/Cache/Tracker/」
#で入手可能です。
これは、キャッシュアナウンスを送る間隔です。デフォルト。デフォルトは、アナウンス・メッセージを送ることを無効にする「0」になっています。
あなたのキャッシュがアナウンスを有効にしたい場合には、以下のラインのコメントマーク(#)を外してください。
# announce_period 1 day
登録のメッセージをannounce_hostとannounce_portで指定された、ホストとポートに対して送ります。
ホスト名は、デフォルトとして「tracker.ircache.net」に、ポート番号は3131をデフォルトにしてあります。
ファイル名を与えると、アナウンスメッセージの中にファイルの内容が付加されます。
# announce_host tracker.ircache.net
# announce_port 3131
もしあなたがSquidをhttpdアクセラレーターとして実行させたいなら、実際のHTTPサーバのホスト名とポート番号を定義してください。もし、バーチャルホストのサポートを求めるのなら、"virtual"としてホスト名を指定します。
注意:httpd_accel_hostを有効にするならば、キャッシュとICPを無効にしてください。もし、これらも同時に使うのであれば「httpd_accel_with_proxy」オプションをセットしてください。
# httpd_accel_host hostname
# httpd_accel_port port
もし、Squidでhttpdアクセラレーターとキャッシュを同時に使うならば"on"にしてください。
# httpd_accel_with_proxy off
HTTP /1.1のリクエストには基本的にURLからのホストネームである "Host:" ヘッダーが含まれます。 Squidは、このヘッダーを見ることによって異なるHTTPサーバーにとって(の)アクセラレーターであることができます。しかし、Squidは、ホスト・ヘッダーの値をチェックしません、したがって、それは、大きいセキュリティ・ホールをになります。 このオプションは、あなたがあなたがしようとしてしている事に確信があることがない限り無効にことを我々は推薦します。しかし、もし透過proxyとしてSquidを走らせるならば、あなたはこのオプションを可能にする必要があるでしょう。さもなければ、"Host:" ヘッダーを要求するバーチャルなサーバーは、適切にキャッシュされないでしょう。
# httpd_accel_uses_host_header off
もし、あなたがSquidをアクセラレータモードで動かしておりかつ、バックエンドのWebサーバが1台だけならば、このタグを on にしてください。 これによって、どんなリクエストヘッダーであっても、リダイレクトが必要な場合にはこのWebサーバへリダイレクトされるようになります。
もしバックエンドサーバが複数あり、DNSなどで切り分けている場合にはこの設定は off にしてください。
# httpd_accel_single_host off
DNSのテストは、最初のサイトの検索に成功すれば終了します。もしあなたがDNSテストを無効にしたければ、このリストをコメントアウトしたりこの行を削除するのではなく、かわりにコマンドで -Dオプションを使って下さい。
# dns_testnames netscape.com internic.net nlanr.net microsoft.com
「squid ?k rotate」コマンドでローテーションさせるログファイルのローテーション数を指定します。 これはデフォルトで10で、この場合には9番目の次は0番目に移行するでしょう。
rotate番号を0にすればログのローテーションは無効になりますが、ログファイルはクローズされて再度、オープンされます。このことは、あなたがローテーションシグナルを送る直前のログファイルのリネームする事を可能にするでしょう。
注意: コマンド 'squid ?k rotate'は通常、実行されているsquidのプロセスに、USR1 のシグナルを送ります。ある状況(例えば、非同期I/OのLinux)では'squid ?k rotate'での USR1 のシグナルは他の目的に使われてしまいます。 そのような場合には、'squid ?k rotate' の代わりに、'kill ?USR1 <pid>'を使うのが良いでしょう。
# logfile_rotate 10
ドットなしのホスト名にローカルなドメイン名を付加します。付加するドメイン名は、ピリオドで始らなくてはいけません。
# append_domain .yourdomain.com
TCPソケットに於けるレシーブバッファのサイズを指定します。 たぶん、カーネルのデフォルトを変えるよりこの方が簡単でしょう。サイズを0にすると、デフォルトのバッファサイズが使われます。
# tcp_recv_bufsize 0 byte
エラーメッセージにHTMLテキストを付加します。ここにはあなたのアドミニストレーター・アドレスの"mailto"、やあなたの組織へのウェブ・ページへのリンクのURLなどを指定できます。
これらのをエラーメッセージに含ませるには、エラーテンプレイトを書き直すことが必要です。
(エラーテンプレイトは"errors"ディレクトリの下から探されます。 : etc\errors )エラーテンプレイト中の"err_html_text"で指定したテキストに置き換えたいところには、%L のタグを差し込んでください。
# err_html_text mailto:[email protected]
# 使い方: deny_info err_page_name acl
# 例: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
このタグは、http_accessタグと共に使用し、http_accessのルールで許可しなかったリクエストを行ったACLに対し、指定されたエラーページ(ERR_CUSTOM_ACCESS_DENIED)を使うように指示します。
http_accessのルールで「deny」としたACLに対し、deny_infoが定義されていた場合にはこれで指定されたエラーページが返されます。
エラーページ(例: ERR_CUSTOM_ACCESS_DENIED )は、Squidをインストールした際のエラーページディレクトリ(RPMでインストールした場合、/usr/loca/squid/share/の下の各言語ディレクトリ以下)に作成し置いておきます。
二者択一的に、あなたは、TCP_RESETを指定することによってSquidにTCP関係をリセットするようにいうことができます。
使用例:
acl localnet src 192.168.1.0/255.255.255.0
acl localnet2 src 192.168.2.0/255.255.255.0
::
http_access allow localnet
http_access deny localnet1
deny_info ERR_CUSTOM_ACCESS_DENIED localnet2
もしセットしたなら、Squidは、将来、利用するかもしれないメモリのためのプール(また利用はしないが)を行います。もしメモリーがあなたのシステムにとって高価でかつ、あなたがSquidのルーティンよりも、システムのmallocライブラリーのほうが性能で凌駕すると信ずれば、これを無効にして下さい。
# memory_pools on
# 'memory_polls'がonの場合のみ利用できます。
# memory_pools_limit 50MB
0 にセットされたなら、Squidは、メモリー・プールで割り当てられたメモリーの指定された限界を保持し続けるでしょう。 あなたのシステム構成がより少ないメモリーを使っている場合には、memory_pools_limiによって合理的な値に限界をセットするほうが安全でしょう。
メモリ割り当て最適化を無効にするためには、memory_pools_limitを0にするのではなく、memory_pools を offにしてください。
# An overhead for maintaining memory pools is not taken into account
# when the limit is checked. This overhead is close to four bytes per
# object kept. However, pools may actually _save_ memory because of
# reduced memory thrashing in your malloc library.
SquidがHTTPリクエストの中にあなたのクライアントシステムのIPアドレスや名前を含めるかを指定します。 デフォルトでは以下のようなリクエストが相手に送られます。
# X-Forwarded-For: 192.168.1.2
もしこれを無効にすると次のようになります。
# X-Forwarded-For: unknown
# forwarded_for on
セットされたなら、ICPリクエストは、access.logにログ記入されます。もしあなたが、ICPのロード高速化したり、ログ分析を簡単にしたいならこれを無効にするのも良いでしょう。
# log_icp_queries on
もしあなたが新鮮でないキャッシュ・オブジェクトのためのICP_ HITを返したければ、このオプションをセットして下さい。 もしあなたが他の管理ドメインのキャッシュとの兄弟姉妹関係を持っていれば、これは、「オフ」であるべきです。もし兄弟姉妹関係のキャッシュがあなたが制御している1つだけなら、これを"on"にしておいてもOKです。
# icp_hit_stale on
pingするサイトがこのポップ数よりも小さいところにあるならば、ダイレクトリICMPのpingを行います。
# minimum_direct_hops 4
キャッシュマネージャで使うパスワードを設定します。
# 使い方: cachemgr_passwd password action action ...
actionとして有効なのもの(完全なリストに関してキャッシュ・マネージャー・メニューを参照する):
# 5min
# 60min
# asndb
# authenticator
# cbdata
# client_list
# comm_incoming
# config *
# counters
# delay
# digest_stats
# dns
# events
# filedescriptors
# fqdncache
# histograms
# http_headers
# info
# io
# ipcache
# mem
# menu
# netdb
# non_peers
# objects
# pconn
# peer_select
# redirector
# refresh
# server_list
# shutdown *
# store_digest
# storedir
# utilization
# via_headers
# vm_objects
*は、有効なパスワードなしでは実行されなされないものを示します。その他は、ここでリストされなくても実行できます。
actionを無効にするには、パスワードとして"disable"をセットしてください。パスワードなしで実行させるのであれば、パスワードとして"none"を設定してください。
キーワードとして"all"を使うとすべてのactionに同じパスワードを使えます。
# cachemgr_passwd secret shutdown
# cachemgr_passwd lesssssssecret info stats/object
# cachemgr_passwd disable all
あなたのキャッシュが保持することができるオブジェクトの、概算の平均オブジェクト・サイズを指定します。
# store_avg_object_size 13 KB
ストアーハッシュ・テーブルでのバケットあたりのオブジェクト数の目標です。この値を低くすることは、バケットおよびまたストレージ・メンテナンス・レートの数が増えることになります。デフォルトは20です。
# store_object_per_bucket 20
もしあなたが、外部へのHTTPリクエストヘッダーに、秘密を推理できるような情報がでるのをフィルターしたい場合にはこのオプションを使います。 これには3つの適当な設定があります。
'off' すべてのHTTPリクエストヘッダーを通します。
'standard' 特定のヘッダーは削除されます。
'paranoid' 最適な特定のヘッダーのみ通します。
どのようなヘッダーが許されるかは、ソースファイルの http-anon.c を見てください。
# http_anonymizer off
もしあなたがクライアントあたりの統計を取るのを止めるなら、client_db をoffに切り替えてください。
# client_db on
ICMP測定データベースの上限と下限を設定します。
これらはパーセントではなくカウントです。 デフォルトは900−1000です。上限に達したなら、下限のカウントになるまでデータベースからエントリが削除されるでしょう。
# netdb_low 900
# netdb_high 1000
サイトの計測のための最低間隔です。 同一のネットワークで連続のpingにおいてこれだけの遅れを考慮します。 デフォルトは5分です。
# netdb_ping_period 5 minutes
もしあなたがあなたの仲間にICP応答でICMPデータを含むようにと頼むなら、このオプションを有効にして下さい。
あなたの仲間のICPサーバが、Squidコンパイル時に"--enable-icmp"で構成されたなら、その仲間は、それが受け取るURLの起源サーバー・サイトにICMPのpingを送るでしょう。もしあなたがその時このオプションを可能にすれば、その仲間からのICP答えは、ICMPデータ(利用できれば)を含むでしょう。それから、親キャッシュを選ぶときに、Squidは、最小のRTTが起源サーバーへの親を選ぶでしょう。これが起こるときに、access.logの階層フィールドは、「CLOSEST_PARENT_MISS」になるでしょう。このオプションは、デフォルトでoffです。
# query_icmp off
もし"on"にすると、目標のホストがICMPデータベースになかRTTが0で合った場合に、ICP_MISSの代わりにICP_MISS_NOFETCHを返します。
# test_reachability off
いくつかのログファイル( cache.log、useragent.log )はstdio関数にてバッファーを使って/または使わずに記録されます。デフォルトではバッファーなしになっていますが、バッファーを使うことで僅かながらスピードアップして記録できるでしょう。
# buffered_logs off
このオプションを有効にした場合、クライアントが nocache(ノーキャッシュ) または、'reload'(再ロード)リクエストだった場合に、If-Modified-Sinceリクエストに変えられます。これはHTTPのスタンダード規約に違反します。 これを有効にする事にする事は、あなたの責任で行ってください。
# reload_into_ims off
# 使い方: always_direct allow|deny [!]aclname ....
ここであなたはオリジナルサーバへ何時でもダイレクトにフォワード要求するかをACLエレメントとともに指定できます。例として、ローカルサーバへの要求を何時でもダイレクトで行う場合は以下のように指定します:
acl local-servers dstdmain my.domain.net
always_direct allow local-servers
何時でも、FTP要求をダイレクトにするには、
acl FTP portto FTP
always_direct allow FTP
注意: 'never_direct'という逆の機能のオプションがあります。あなたは、'always_direct deny foo'が'never_direct allow foo'と同じことでないことを知っている必要があります。 あなたが必要なら、denyルールを使った後に、それを排斥する追加のルールを指定することもできます。例として:
# acl local-external dstdomain external.foo.net
# acl local-servers dstdomain foo.net
# always_direct deny local-external
# always_direct allow local-servers
このオプションはV1.1にあった local-domain や local-ip のように機能します。
# 使い方: never_direct allow|deny [!]aclname ....
never_firectは always_direct の逆の機能です。 まず、always_direct の機能について読んで下さい。
あなたは、'never_direct' でオリジナルサーバへ決してフォワードさせたくないリクエストをACLエレメントを使って明示できます。例えば、ローカルドメイン以外からのすべての要求をproxyを経由して行うなら以下のような設定になります。
acl local-servers dstdmain domain.net
acl all src 0.0.0.0/0.0.0.0
never_direct deny local-servers
never_direct allow all
また、Squidがファイヤーウォールの内側にあってさらにそこがイントラネットサーバの場所ならば、以下のように設定します。
acl local-intranet dstdmain foo.net
acl local-externet dstdmain externet.foo.net
always_diresct deny local-externet
always_diresct allow local-intranet
never_direct allow all
このオプションはV1.1における inside_firewall と firewall_ip と同等です。
もしあなたが http_anonymizerで paranoid を設定したなら、Squidは リクエストからUser-agentに関する情報を取り去ります。 いくつかのWebサーバは、User-agent の情報がないリクエストを拒否することでしょう。 このオプションを使うとこの情報に偽(ふり)の情報を送れます。例として、
# fake_user_agent Nutscrape/1.0(CP/M;8-bit)
# (credit to Paul Southworth [email protected] for this one!)
# fake_user_agent none
アイコンが格納されているディレクトリを指定します。
普通は、/usr/local/squid/etc/icons に保存されています。
もしあなたが、あなたの言語圏に合わせたエラーファイルのテンプレートを作りたいなら、デフォルトのエラーファイルを元にして、別のディレクトリのコピーしてからこのパラメータでそれを指定します。
最小の接続タイムアウトを指定します。 接続タイムアウトは複数のIPIPアドレスをもつ場合、縮小するのでこれを補います。
ホストへのコネクションのはじめに、そのホストがいくつものIPアドレスを持っているとき、デフォルトのコネクションタイムアウトは、アドレスの数によって縮小(分割)します。したがって、15のアドレスをもつサイトでは、それぞれのアドレスのタイムアウトは8秒になります。 ホストが答えるチャンスが無いほどのタイムアウトになる事を避けるためにこの設定が用意されています。 デフォルトでは5秒です。最大値はconnect_timeoutより小さくかつ、60秒または、connect_timeoutの設定の半分の時間のうちの大きい方です。
# minimum_retry_timeout 5 seconds
これは、コネクションのための試みを1つのアドレスを持っているホストに何回試みるかを指定します。(複数のアドレスを持っている場合には、一度しか試みません。)
デフォルトは3です。最大は255(推奨できません。)まで指定できます。 もしそれが10より大きな値にセットされた場合には、警告メッセージが発せられます。
# maximum_single_addr_tries 3
Squidは、SNMP経由で統計、および状態情報を今、出すことができます。デフォルトでそれはポートの 3401 を開きます。 もしあなたがSNMPを使いたくない時はここへ '-1' を設定してください。
注意: SNMPサポートを使うためには、--enable-smnp のオプションを使ってSquidをコンパイルする必要があります。
# snmp_port 3401
無効にすると、snmpパケットを直ぐに送るためのキューは使われないでしょう。あなたがトラブルになっているキャッシュをモニタリングしたいときには役に立つかも知れません。しかしこれはコネクションを遅くして、Squidのキャッシュを塞ぐために、おそらくはキャッシュの状態を悪化させるでしょう。
# snmp_do_queueing on
# This configures whether we should be forwarding SNMP requests
# to another snmpd. The reason for putting this piece of
# functionality into Squid was to enable access to the system's
# installed snmpd with minimal changes. This option is turned
# off by default, check with your /etc/services for your system's
# snmp port (usually 161). We do not use getservbyname() to
# allow you to set Squid into port 161 and your system's snmpd to
# another port by changing /etc/services.
#
# WARNING: Because of Squid acting as a proxy snmpd for system
# you have to do security checks on THIS snmpd for all objects.
# Check your snmp_config_file.
#forward_snmpd_port 0
Squidのsnmpの為のmibファイルの場所
# snmp_mib_path /usr/local/squid/etc/mib.txt
snmpのトラップを流すべき、ホスト名またはIPアドレス。
# trap_sink 127.0.0.1
SNMPのトラップのコミュニティ名
# snmp_trap_community public
認証されたSNMPトラップを有効にする。 'off' か 'on' をセットする
# snmp_enable_authen_traps off
snmpのビュー、ユーザ、コミュニティで定義する。
例:
snmp_agent_conf view all.1.3.6 include
snmp_agent_conf view squid.1.3.6 include
snmp_agent_conf user squid - all all public
snmp_agent_conf user all all all all squid
snmp_agent_conf community public squid squid
snmp_agent_conf community readwrite all all
コミュニティ毎のACLを定義する。:
snmp_acl communityname allow|deny [!]aclname ...
例:
snmp_acl public allow adminsubnet
snmp_acl public deny all
'udp_incoming_address' みたいな機能で、それのSNMPポートのものです。
snmp_incoming_address はSNMPエージェントからのメッセージを受信します。
snmp_outgoing_address はSNMPエージェントへパケットを返します。
デフォルトではどんなアドレスもバインドされていません。
注意:これら2つは同じポート3130を使うので、同じアドレスを指定することはできません。
WHOISサーバへのクエリの為のAS番号。
注意: AS番号は、すべてのリクエストのためにではなくSquidが開始の時にだけ尋ねられます。
DELAY プールパラメータ(オプションをはコンパイル時にDELAY_POOLを指定しておく事)
#
# A general note on delay pools - the first matched delay pool is used,
# that is, if a request falls into class1 then it isn't checked for class2
# or class3 (and similarly a class2 request isn't checked for class3).
# This is used to select what client requests are processed via
# the first ("class 1") delay pool. In this delay pool only the
# aggregate traffic allowance is configurable.
# This is used to select what client requests are processed via
# the first ("class 2") delay pool. In this delay pool both the
# aggregate and per-host traffic allowance are configurable.
# There are 254 individual delay pools based on the last 8 bits
# of the client IP address (addresses ending in 0 and 255 are not
# permitted).
# This is used to select what client requests are processed via
# the first ("class 3") delay pool. In this delay pool, the
# aggregate, network and per-host traffic allowance are
# configurable. There are 255 network delay pools based on the
# 17th to 24th bit of the client IP address (network 255 is not
# permitted), and individual delay pools based on the last 16
# bits of the client IP address (network 255 and hosts ending in
# 0 and 255 are not permitted).
# The number of bytes per second added to the class 1 aggregate
# delay pool traffic allowance (-1 to disable the delay pool).
# The maximum number of bytes which can be in the class 1
# aggregate delay pool traffic allowance.
# The number of bytes per second added to the class 2 aggregate
# delay pool traffic allowance (-1 to disable the delay pool).
# The maximum number of bytes which can be in the class 2
# aggregate delay pool traffic allowance.
# The number of bytes per second added to the class 2 individual
# host delay pool traffic allowances (-1 to disable these delay
# pools).
# The maximum number of bytes which can be in the class 2
# individual host delay pool traffic allowances.
# The number of bytes per second added to the class 3 aggregate
# delay pool traffic allowance (-1 to disable the delay pool).
# The maximum number of bytes which can be in the class 3
# aggregate delay pool traffic allowance.
# The number of bytes per second added to the class 3 8-bit
# network delay pool traffic allowances (-1 to disable these
# delay pools).
# The maximum number of bytes which can be in the class 3 8-bit
# network delay pool traffic allowances.
# The number of bytes per second added to the class 3 individual
# host delay pool traffic allowances (-1 to disable these delay
# pools).
# The maximum number of bytes which can be in the class 3
# individual host delay pool traffic allowances.
# Heavy voodoo here. I can't even beleve you are reading this.
# Are you crazy? Don't even think about adjusting these unless
# you understand the algorithms in comm_select.c first!
#
#incoming_icp_average 6
#incoming_http_average 4
#min_icp_poll_cnt 8
#min_http_poll_cnt 8
# Enable this option and Squid will never try to validate cached
# objects.
URLのオプションで空白のスペースを許すか指定します。
オプションとしては、
deny: 空白を許可しません。 空白のリクエストがあった場合 "Invalid Request" をユーザに返します。
allow: URIに空白を許可し、そのままで渡します。 注意: もしリダイレクタープログラムを使っているなら、空白はそのままリダイレクターに渡されます。
encode: 空白の指定は許可しますが、空白はRFC1738に基づき変換されます。この書き換えは、HTTP/1.1においてRFC違反と見なされるかもしれません。
chop: リクエストは許可しますが、空白の部分で切り取られます。 これはURIの違反となる事でしょう。
#uri_whitespace deny
これを"off"にすることで、POSTリクエストの持続性を無効にできます。
無効にすることでSquidは、クライアントからのリクエストをすべて読み込んでからサーバに送ります。 これは、変則のWebクライアントからのCR-LFを待つ、変則のWebサーバの為に設定します。
#persistent_client_posts on
Copyright© 1998-2003 ROBATA.ORG