プロキシ
Proxy (Proxy Server)
概要(サマリー)
プロキシ(Proxy)とは、クライアント(ユーザーのPC)とサーバーの間に入って通信を代理で行う仕組みやサーバーのことである。「代理人」という意味の言葉だ。
たとえば会社のネットワークではプロキシサーバーを通してインターネットに接続することが多く、通信の監視・フィルタリング・キャッシュによる高速化などに使われる。開発の現場ではCORS問題の回避や、APIリクエストの中継など、さまざまな用途で登場する概念だ。
詳細解説
プロキシとは何か
通常のWeb通信はクライアント(ブラウザなど)が直接サーバーにリクエストを送るが、プロキシを使うと「クライアント → プロキシ → サーバー」という形で通信が中継される。サーバー側からは、実際のクライアントではなくプロキシのIPアドレスが見えるため、クライアントのIPアドレスを隠す効果もある。
フォワードプロキシとリバースプロキシ
プロキシには大きく2種類ある。
フォワードプロキシ(Forward Proxy)
- クライアント側に置く
- クライアントの代わりにサーバーへリクエストを送る
- 会社・学校のフィルタリングやVPN的な用途で使われる
リバースプロキシ(Reverse Proxy)
- サーバー側に置く
- クライアントからのリクエストをバックエンドサーバーに振り分ける
- NginxやApacheをリバースプロキシとして使うケースが多い
- サーバーの負荷分散・セキュリティ強化・HTTPS終端などに利用される
開発でよく出会うプロキシ
フロントエンド開発においてCORSの制限でAPIリクエストが失敗することがある。その回避策として開発用サーバーのプロキシ機能を使うことが多い。ただし、これは開発中の便宜的な対処であり、本番環境ではサーバー側のCORS設定やAPI設計を正しく行う必要がある。
// Viteの設定例(開発時のCORS回避プロキシ)
export default {
server: {
proxy: {
'/api': {
target: 'https://api.example.com',
changeOrigin: true
}
}
}
}
この設定では、/apiへのリクエストをhttps://api.example.comに中継(プロキシ)する。
プロキシとSSL/TLSの関係
SSL/TLSを終端するリバースプロキシを使うと、バックエンドサーバーがHTTPS対応でなくても、プロキシがHTTPS通信を受け取ってHTTPに変換してバックエンドに渡せる。これは「TLS終端」と呼ばれ、慣用的に「SSL終端」と呼ばれることもある。本番環境の構成でよく見られるパターンだ。
プロキシのセキュリティ上の注意点
プロキシを無断で経由させられるケースもある。悪意あるプロキシを通すとHTTP通信の中身が傍受される危険性がある。HTTPSを使うことで通信内容は暗号化されるが、企業プロキシなどでは端末に専用の証明書を入れて通信を復号・検査する構成もある。HTTPSでもプロキシの種類や証明書設定によって見え方が変わるため注意が必要だ。また、無料のプロキシサービスの使用は通信内容が漏れるリスクがあるため慎重に扱うべきである。
AIコーディングとの関係
AIにプロキシの設定を依頼するときは、「フロントエンド開発サーバーでCORSを回避するプロキシをViteで設定する方法を教えて」「Nginxをリバースプロキシとして設定するコンフィグを書いて」といった具体的な用途と環境を伝えると効果的だ。プロキシ設定はミスが起きやすいため、AIが生成した設定を確認する際はリクエストが正しく中継されているかをログで確認することを推奨する。
よくある勘違い
プロキシ = VPN?
プロキシとVPNはどちらも通信を中継するが仕組みが異なる。プロキシは主にアプリ(ブラウザなど)単位で通信を中継し、VPNはOS全体のネットワーク通信を暗号化トンネルで送る。どちらが安全かは製品や設定によって変わるため、通信範囲と暗号化の対象が異なるものとして理解するとよい。
リバースプロキシ = ロードバランサー?
リバースプロキシは通信を中継・変換する役割で、ロードバランサーは複数サーバーへの負荷分散が主目的である。Nginxはどちらもできるためよくセットで使われるが、役割の定義は異なる。
プロキシを使えばIPアドレスを完全に隠せる?
フォワードプロキシを使うと送信元IPはプロキシのIPに置き換わるが、プロキシサーバー自体にはアクセス記録が残る。匿名性は完全ではなく、プロキシサーバーの管理者にはアクセス情報が見える。
まとめ
- プロキシはクライアントとサーバーの通信を代理・中継する仕組みで、フォワードプロキシとリバースプロキシがある
- 開発ではCORSの回避手段として開発サーバーのプロキシ機能が活躍する
- 本番環境ではNginxなどをリバースプロキシとしてSSL終端・負荷分散に使うケースが多い
- 無料プロキシの使用は通信の傍受リスクがあり注意が必要
- プロキシとVPNは似た役割に見えるが仕組みとスコープが異なる
情報ソース
より詳しくAIに聞いてみよう
- プロキシとは何か、初心者向けにわかりやすく説明してください。
- フォワードプロキシとリバースプロキシの違いと使い分けを教えてください。
- フロントエンド開発でCORSをプロキシで回避する方法を具体的に教えてください。
- NginxをリバースプロキシとしてNode.jsアプリの前に置く設定例を教えてください。
- AIにプロキシ設定のコードを書いてもらうときの効果的な指示の出し方を教えてください。