Squid (ソフトウェア)

Squid（スクウィッド）はプロキシ (Proxy) サーバ、ウェブキャッシュサーバなどに利用されるフリーソフトウェア。GPLでライセンスされている。
Squidの用途は、重複リクエストに対したキャッシュ応答によるウェブサーバの高速化や、ネットワーク資源を共有する人々が行うWorld Wide WebやDNSなどの様々なネットワーククエリのキャッシュなど、多岐にわたる。元来はUnix系のコンピュータで動作させる目的で設計されている。
Squidは長く開発が続けられてきた。多様なプロトコルをサポートしているが、主にHTTPとFTPで利用される。
TLS/SSL、HTTPSなどのセキュリティで保護された通信のサポートも行われている。
当初はC言語で書かれていたが、バージョン3以降では多くのソースがC++で書かれたものに置き換えられている。
ウェブプロキシ.
キャッシングは、リクエストされたWebページやWebページ上の画像などインターネット上の様々な情報をクライアント側から見てネットワーク上の近傍にあるコンピュータに貯蔵しておく技術である。ウェブブラウザはSquidをHTTPのプロキシサーバとして利用し、ネットワーク帯域を節約するとともに、目的のページに高速にアクセスすることができる。
これはインターネットサービスプロバイダが加入利用者のインターネットアクセスを高速化するのに、あるいはLAN内でインターネット接続を共有するのに有効な手法である。プロキシ（実質的なクライアントの代理としてクライアントとして目的の情報にアクセスする）でもあることから、匿名性や安全性も提供するはたらきを持っている。
プロキシサーバの利用は、ブラウザ等のクライアントのソフトウェアで利用したいプロキシサーバの指定を明示的に行う方法か、もしくは透過プロキシと呼ばれる特に設定を必要としない方法によって行われる。明示的な設定を行う方法はインターネットサービスプロバイダの利用者等に、透過プロキシは企業内のLANの設定等でしばしば用いられる。
Squidは、クライアントが生成するヘッダを書き換えるなどの方法によって、匿名による接続の機能も提供する。詳細は、Squidのドキュメンテーションのcodice_1およびcodice_2の項に記載されている。
リバースプロキシ(Reverse Proxy).
前項で述べたような、特定少数のクライアントのために不特定多数のサーバのキャッシュを提供する形態のプロキシが、伝統的な利用法である。
もう一方の利用法は、リバースプロキシあるいはウェブサーバアクセラレーションと呼ばれる（codice_3の設定を用いる）。
この利用法では、不特定多数のクライアントに対して特定少数のサーバのキャッシュを提供する。
実際にコンテンツを持っているウェブサーバを"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でも使用されていた。