Squid開発元squid-cache.org
初版1996年7月 (27年前) (1996-07)
最新版6.9[1]
Squid(スクウィッド)はプロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。GPLでライセンスされている。Squidの用途は、重複リクエストに対したキャッシュ応答によるウェブサーバの高速化や、ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリのキャッシュなど、多岐にわたる。元来はUnix系のコンピュータで動作させる目的で設計されている。
Squidは長く開発が続けられてきた[4]。多様なプロトコルをサポートしているが、主にHTTPとFTPで利用される。TLS/SSL、HTTPSなどのセキュリティで保護された通信のサポートも行われている[5]。
当初はC言語で書かれていたが、バージョン3以降では多くのソースがC++で書かれたものに置き換えられている。 キャッシングは、リクエストされたWebページやWebページ上の画像などインターネット上の様々な情報をクライアント側から見てネットワーク上の近傍にあるコンピュータに貯蔵しておく技術である。ウェブブラウザはSquidをHTTPのプロキシサーバとして利用し、ネットワーク帯域を節約するとともに、目的のページに高速にアクセスすることができる。これはインターネットサービスプロバイダが加入利用者のインターネットアクセスを高速化するのに、あるいはLAN内でインターネット接続を共有するのに有効な手法である。プロキシ(実質的なクライアントの代理としてクライアントとして目的の情報にアクセスする)でもあることから、匿名性や安全性も提供するはたらきを持っている。 プロキシサーバの利用は、ブラウザ等のクライアントのソフトウェアで利用したいプロキシサーバの指定を明示的に行う方法か、もしくは透過プロキシと呼ばれる特に設定を必要としない方法によって行われる。明示的な設定を行う方法はインターネットサービスプロバイダの利用者等に、透過プロキシは企業内のLANの設定等でしばしば用いられる。 Squidは、クライアントが生成するヘッダを書き換えるなどの方法によって、匿名による接続の機能も提供する。詳細は、Squidのドキュメンテーションのheader_accessおよびheader_replaceの項に記載されている。 前項で述べたような、特定少数のクライアントのために不特定多数のサーバのキャッシュを提供する形態のプロキシが、伝統的な利用法である。 もう一方の利用法は、リバースプロキシ[6]あるいはウェブサーバアクセラレーションと呼ばれる(httpd_accel_hostの設定を用いる)。この利用法では、不特定多数のクライアントに対して特定少数のサーバのキャッシュを提供する。 実際にコンテンツを持っているウェブサーバをslow.example.com、Squidによるリバースプロキシをwww.example.comとする。www.example.com上のあるコンテンツに対するリクエストが最初に行われた際に、実際のコンテンツはslow.example.comから取り出されるが、一定期間中(期間は設定により異なる)、2回目以降のアクセスにはこの際に取り出されたコピーがリバースプロキシから送出されるようになる。結果としてslow.example.comへのアクセス数を低く抑えることができ、slow.example.comの負荷やネットワークの帯域を節約できる。 一つのSquidサーバを通常のプロキシとリバースプロキシ両方の機能で稼働させることも可能である。 Squidは以下のオペレーティングシステム上で動作可能である。 ウィキペディアのupload.wikimedia.orgでも使用されていた[7]。
ウェブプロキシ
リバースプロキシ(Reverse Proxy)
移植性The Linux-based software bundle LAMP here additionally with Squid as web cache
Linux
FreeBSD
OpenBSD
NetBSD
BSDI
macOS
OSF and Digital Unix
IRIX
SunOS/Solaris
NeXTStep
SCO Unix
AIX
HP-UX
Windows
脚注[脚注の使い方]^ "squid : Optimising Web Delivery"
^ “ ⇒squid : Optimising Web Delivery”. 2023年8月20日閲覧。
^ 50音順にアゼルバイジャン語、アフリカーンス語、アラビア語、アルメニア語、イタリア語、インドネシア語、ウクライナ語、ウズベク語、英語、エストニア語、オック語、オランダ語、カタルーニャ語、ギリシア語、グルジア語、スペイン語、スロバキア語、スロベニア語、セルビア語(キリル文字、ラテン文字)、タイ語、チェコ語、中国語(簡体字、繁体字)、朝鮮語、デンマーク語、ドイツ語、トルコ語、日本語、ハンガリー語、フィンランド語、フランス語、ブルガリア語、ベトナム語、ポーランド語、ポルトガル語、マレー語、ヘブライ語、ペルシア語、ラトビア語、リトアニア語、ルーマニア語、ロシア語(3.5.3版配布物件のerrorsディレクトリーによる)。
^ 1990年代前期に開発されたHarvest Cache Daemonに基づいている、とする記述が見える。“ ⇒Intro”. 2012年12月21日閲覧。
^ ⇒SquidのFAQページより(英語)
^ Visolve Squid Team. “ ⇒Squid Reverse Proxy”. 2009年7月4日閲覧。
^ “upload.wikimedia.orgのトップ・ページ
外部リンク
Information
公式ウェブサイト
⇒Squid + PF - SquidとPFを用いた透過プロキシ
⇒Logfile Analysis - ログファイル解析スクリプトの一覧
⇒Squid Support: マニュアル、設定のヒント集など
⇒Squid cache Configuration: マニュアル、設定のヒント集など
アドオン
⇒Squidguard - フィルタリングのためのプラグイン
E2guardian - フィルタリング(Smart filtering)のためのプラグイン
⇒Calamaris - ログファイルの解析ツール
⇒Squeezer2 - ログファイルの解析ツール
⇒SARG Squid Analysis Report Generator - ログファイルの解析ツール
キャッシュ動作の確認が可能なWebページ
⇒web-caching.com: check page cacheability
⇒analyze.forret.com: analyze HTTP headers and compare to Squid policy
表
話
編
歴
ファイアウォールソフトウェア
.mw-parser-output .hlist ul,.mw-parser-output .hlist ol{padding-left:0}.mw-parser-output .hlist li,.mw-parser-output .hlist dd,.mw-parser-output .hlist dt{margin-right:0;display:inline-block;white-space:nowrap}.mw-parser-output .hlist dt:after,.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{white-space:normal}.mw-parser-output .hlist li:after,.mw-parser-output .hlist dd:after{content:" ・\a0 ";font-weight:bold}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist-pipe dd:after,.mw-parser-output .hlist-pipe li:after{content:" |\a0 ";font-weight:normal}.mw-parser-output .hlist-hyphen dd:after,.mw-parser-output .hlist-hyphen li:after{content:" -\a0 ";font-weight:normal}.mw-parser-output .hlist-comma dd:after,.mw-parser-output .hlist-comma li:after{content:"、";font-weight:normal}.mw-parser-output .hlist-slash dd:after,.mw-parser-output .hlist-slash li:after{content:" /\a0 ";font-weight:normal}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")\a0 ";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)" ";white-space:nowrap}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)" "}