リバースプロキシとは、利用者からのアクセスをいったん代理で受け取り、裏側にある本来のサーバーへ橋渡しするサーバー(またはその仕組み)のことです。結論から言うと、リバースプロキシは「サーバー側の受付窓口」で、Nginxはその窓口役として最もよく使われるソフトウェアの1つです。この記事では、リバースプロキシの意味と必要な理由、Nginxでの設定例、ロードバランサーやフォワードプロキシとの違い、NginxとApacheの違いまでを、現役インフラエンジニアが未経験向けに整理します。

リバースプロキシとは?仕組みをやさしく解説
リバースプロキシ(リバースプロキシサーバ)とは、利用者(クライアント)からのアクセスを直接アプリケーションのサーバーに届けるのではなく、間に立つサーバーがいったん受け取り、裏側の適切なサーバーへ転送する仕組みです。利用者から見ると、アクセス先はリバースプロキシの1点だけで、その奥に何台のサーバーがあり、どんな構成になっているかは見えません。
窓口の担当者が裏の部署に取り次いでくれるイメージに近く、利用者は取り次ぎの存在を意識せずにサービスを使えます。通信は次の順番で流れます。
- 利用者のブラウザが「example.com」にアクセスする
- リバースプロキシがそのリクエストを受け取る
- リバースプロキシがURLのパスなどを見て、裏側のアプリケーションサーバーへ転送する
- アプリケーションサーバーの応答を、リバースプロキシが利用者へ返す
この流れを図にすると、次のようになります。
なぜリバースプロキシが必要なのか
リバースプロキシを置く主な理由は次の4つです。
- 裏側の構成を隠せる: 利用者がやり取りするのは窓口だけになり、アプリケーションサーバーのIPアドレスや台数を外部から見えにくくできる
- HTTPSの処理をまとめられる: SSL/TLSの証明書と暗号化・復号の処理を窓口1か所に集約でき、証明書の更新も1か所で済む
- 振り分けができる: 「/api はAPIサーバーへ、それ以外はWebサーバーへ」のように、パスやドメインごとに転送先を変えられる
- キャッシュや圧縮を任せられる: 画像やCSSのような変化の少ないファイルを窓口で返し、裏側の負荷を減らせる場合がある
特に2つ目は現場でよく見る使い方です。HTTPSの仕組みはSSL/TLSとは?で解説しているので、あわせて読むと「なぜ窓口で暗号化を終わらせるのか」がつながります。
Nginxでリバースプロキシを設定する例
Nginxでは、設定ファイルの proxy_pass という1行で「受け取ったアクセスをどこへ転送するか」を指定します。同じサーバー内の3000番ポートで動くアプリへ転送する最小限の例は次のとおりです。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}読み方のポイントは3つです。
- listen / server_name: 80番ポートで「example.com」宛てのアクセスを受け付ける
- location / と proxy_pass: すべてのパスへのアクセスを 127.0.0.1:3000 へ転送する
- proxy_set_header: 元のホスト名や利用者のIPアドレスを裏側のアプリへ伝える(書かないとアプリ側には窓口のIPしか見えない)
裏側のサーバーが複数台ある場合は、upstream でまとめて転送先にすると、アクセスが順番に振り分けられます(既定はラウンドロビン)。
upstream app_servers {
server 10.0.1.10:8080;
server 10.0.1.11:8080;
}この場合は proxy_pass http://app_servers; と書きます。設定を変えたら sudo nginx -t で文法をチェックし、sudo systemctl reload nginx で反映するのが基本の流れです。systemctlの使い方はsystemctlとは?で整理しています。
リバースプロキシとロードバランサーの違い
上の upstream の例のように、リバースプロキシはロードバランサーの役割も兼ねられます。そのため両者は混同されがちですが、主な目的が異なります。
| リバースプロキシ | ロードバランサー | |
|---|---|---|
| 主な目的 | 窓口として代理で受け取り、転送する | 複数のサーバーへ負荷を分散する |
| 得意なこと | HTTPS終端、パス別の振り分け、キャッシュ | 振り分け方式の選択、ヘルスチェックで故障したサーバーを外す |
| 裏側が1台でも意味があるか | ある(構成を隠す・HTTPSをまとめる) | ほぼない(分散先が必要) |
| 代表例 | Nginx、Apache | AWSのALB・NLB、専用機器、Nginx |
「窓口として代理する」のがリバースプロキシ、「複数台に配る」のがロードバランサーで、Nginxはどちらとしても使えると捉えると整理しやすくなります。ロードバランサーの詳しい仕組みはロードバランサーとは?で解説しています。
フォワードプロキシとの違い
単に「プロキシ」と言った場合は、フォワードプロキシを指すことが多いです。どちらも間に立つ点は同じですが、誰の代理を務めるかが逆になります。
| 種類 | 代理する相手 | 置かれる場所 | 主な目的 |
|---|---|---|---|
| フォワードプロキシ | 利用者(クライアント)側 | 社内ネットワークの出口 | 社内から外部サイトへのアクセスを集約・制限・記録する |
| リバースプロキシ | サーバー側 | サービスの入口 | 外部からのアクセスを受け取り、裏側のサーバーへ橋渡しする |
会社のPCから外部サイトを見るときに通るのがフォワードプロキシ、外部の利用者が自社サービスに来るときに通るのがリバースプロキシ、と覚えておくと迷いません。
NginxとApacheの違い
リバースプロキシとして使われる代表的なソフトウェアがNginxとApacheです。どちらもWebサーバーとリバースプロキシの両方を担えますが、設計の考え方が異なります。
| Nginx | Apache | |
|---|---|---|
| 処理の仕組み | イベント駆動。少ないプロセスで多数の接続をさばく | プロセスやスレッドで接続を処理する(MPMで方式を選ぶ) |
| 得意な場面 | 同時接続の多いサイト、リバースプロキシ、静的ファイル配信 | 既存システム、モジュールを組み合わせた柔軟な設定 |
| 設定の特徴 | 設定ファイルに集約。.htaccessは使えない | ディレクトリごとに.htaccessで設定を上書きできる |
| リバースプロキシの設定 | proxy_pass | mod_proxyのProxyPass |
新しく構築する環境ではNginxを窓口に置く構成をよく見かけますが、どちらが正解というより、既存の構成やチームの知見で選ばれるものです。
Nginxは転職で役立つ?現場で関わる場面
Nginxは求人票の歓迎スキルやWebサービスの構成図で名前を見かけることが多いソフトウェアです。現役でインフラの現場にいる立場から言うと、未経験の段階で求められるのは設計力ではなく、上のような設定ファイルを読んで「どのアクセスをどこへ転送しているか」を説明できることです。現場で関わる代表的な場面は次の3つです。
- アクセスが届かないときの切り分け: 「特定のページだけ表示されない」報告を受け、転送設定の問題か裏側のサーバーの問題かを切り分ける
- SSL証明書の更新: リバースプロキシにまとめて設定された証明書を更新し、reloadで反映する
- サーバー追加時の設定変更: upstreamに転送先を1行足し、nginx -tで確認してから反映する
切り分けでは、利用者のアクセスがDNS→リバースプロキシ→アプリの順に通ることを図で追えると原因に早くたどり着けます。名前解決の流れはDNSの仕組みとは?を参考にしてください。
InfraDojoで学ぶ
InfraDojoなら、ブラウザ上の演習環境でネットワークの基礎やLinuxの操作を手を動かしながら学べるため、リバースプロキシの前提になる通信の流れやサービスの起動・反映の操作を順番に固めていけます。どこから学べばいいか迷う場合は、ロードマップで全体の流れを確認しておくと、Nginxを学ぶタイミングも判断しやすくなります。
よくある質問
Q. リバースプロキシサーバとリバースプロキシは同じ意味ですか?
ほぼ同じ意味で使われます。リバースプロキシという仕組みの役割を担っているサーバーをリバースプロキシサーバと呼び、現場の会話や構成図ではどちらの言い方も見かけます。
Q. リバースプロキシは未経験のうちから学んでおくべきですか?
必須ではありませんが、クライアントとサーバーの関係、IPアドレス、ポート番号といったネットワークの基礎を理解したあとであれば無理なく学べる範囲です。基礎を飛ばして名前だけ覚えようとすると、なぜ間に挟む必要があるのかが分からず暗記になりやすいため、順番を意識しておくとよいでしょう。
Q. 自宅の学習環境でもリバースプロキシの動きは試せますか?
仮想環境やDockerを使えば、Nginxを1台立てて裏側に簡単なアプリを2つほど用意し、アクセスがどちらに転送されるかを自分の手で確認する練習ができます。設定ファイルを書き換えて転送先が変わる様子を見比べると、構成図を読むときの理解が深まります。