プロキシ(proxy) の直訳は、「代理」です。
つまり ある目標のサーバーへ接続する時、代わりに接続するサーバーです。
一般には、社内ネットワークと外部インターネットの境界に置かれます。
内部から外部への接続において、内部ネットワークのコンピュータに代わって(代理として)
インターネットとの接続を行なうコンピュータがプロキシサーバです。
よって、サーバーと通信する際の仲介役を行うサーバーと言えます。
厳密には、通過型と非通過型に分けられますが、
単にプロキシサーバーと言う場合は非通過型を指し、以下の説明は非通過型です。
(通過型はブラウザなどのクライアント側でプロキシを意識させない使い方をできるものです)
プロキシサーバはクライアントとサーバの間で両者の通信を仲介します。これを実現するために
「クライアントとプロキシサーバ」および「プロキシサーバとサーバ」という2つのTCPセッションを作ります。
(プロキシを使わないなら「クライアントとサーバ」の一つのTCPセッションで、それはクライアントから直接にサーバに接続する形態)
つまり例えばHTTPのプロキシサーバを介在させる場合であれば、ブラウザからプロキシサーバに接続する形態です。
さて、HTTPのリクエストメッセージの「GET /abc/xyz.html HTTP1/1」がプロキシサーバに届いても
プロキシでは、そのメッセージをどこに送るか判断できません。
これにはどのマシンにメッセージを送るかの表現が含まれていないからです。
よって、リクエストメッセージのURIは絶対パスにしなければなりません。
例えば、「GET http://www.nnn.net.jp/abc/xyz.html HTTP1/1」のような表現です。
これで、プロキシサーバは、このメッセージの届け先が「nnn.net.jp」と判断して
そこにTCP接続を要求してセッションを作り、そこに「/abc/xyz.html」のコンテンツを要求するわけです。
このようにプロキシは、クライアントからのHTTPアプリケーションプロトコルを判断して
目的のサーバーにに対するリクエストメッセージを作り直して要求します。
また、応答に関してはサーバの代理としてクライアントに応答します。
このようにHTTPアプリケーション層のレベルでメッセージを判断して中継します。 その意味でプロキシサーバは、アプリケーションゲートウェイとも呼ばれています。
一般にファイアーウォールの目的で使われます。
内部ネットワークと外部インターネットの境に配置されるサーバで、
内部から直接に外部インターネットへ接続できないようすることで、
外部からの脅威、内部からの情報漏洩を防ぎます。
また内部からは、特定の種類の接続のみを許可したり、
外部からの不正なアクセスを遮断するパケットフィルタリングを行います。