この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:atom
更新日時:2026-05-17 06:28:43

タイトル: プロキシ

プロキシとは

クライアントの代理としてサーバーと通信するサーバー(プロキシサーバー)。クライアントとインターネット上のサーバーの間に立ち、リクエスト・レスポンスを中継します。

用途としては通信の安全化、高速化が挙げられる。

プロキシの種類

種類役割典型的な利用例
フォワードプロキシクライアント側に立ち、外部への通信を中継社内からインターネット接続、フィルタリング、キャッシュ
リバースプロキシサーバー側に立ち、外部からのリクエストを内部サーバーに振り分けロードバランサ、SSL終端、Nginx / Apache mod_proxy
透過プロキシクライアントが意識せずに経由するプロキシISPやキャリアでの中継
SOCKSプロキシTCP/UDPレベルの汎用プロキシSSHトンネル、Tor

プロキシで実現できること

  • アクセス制御 — 特定ドメインへのアクセス遮断、社内向けフィルタリング
  • キャッシュ — 同じコンテンツを複数クライアントが取得する場合の効率化
  • ログ収集 — どのクライアントがどのサイトに接続したかの監査
  • 匿名化 — クライアントIPを隠す(VPN/Tor等)
  • SSL終端 — リバースプロキシでHTTPS処理を集約
  • ロードバランシング — 複数の内部サーバーに振り分け

プロキシを使う設定例

環境変数で設定(Linux/Mac)

$ export http_proxy=http://proxy.example.com:8080
$ export https_proxy=http://proxy.example.com:8080
$ export no_proxy="localhost,127.0.0.1,.internal"

curlで一時的に指定

$ curl -x http://proxy.example.com:8080 https://example.com

git でプロキシ設定

$ git config --global http.proxy http://proxy.example.com:8080

Nginx でリバースプロキシ

server {
    listen 80;
    location / {
        proxy_pass http://internal-app:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

注意点

  • 多くのアプリは http_proxy / https_proxy 環境変数を読む。設定が反映されないときは HTTP_PROXY(大文字)も試す
  • HTTPS のリバースプロキシでは、上流(アプリ側)に渡るリクエストは平文HTTPになる場合がある。X-Forwarded-Proto ヘッダで判定する
  • 社内プロキシ環境では npm / composer / pip も別途プロキシ設定が必要
  • プロキシ経由でも認証情報は暗号化される(HTTPS)が、CONNECTメソッドは内容が見えない点はメリット/デメリット両面

関連