# Reverse Proxy

> Proxyman の Reverse Proxy を使うと、システムプロキシを無視するアプリやコマンドラインツールの HTTP/HTTPS 通信を、ローカルポート経由でキャプチャできます。

## 1. 概要 {#1-whats-it}

Reverse Proxy は、**ローカルの Web サーバー** を作成し、通信をリモートサーバーへ透過的に転送します。これにより、Proxyman は通信をキャプチャしてログに記録できます。

Reverse Proxy は、HTTP/HTTPS プロキシに対応していないクライアントを扱う場合や、HTTP プロキシの設定が複雑すぎる場合に役立ちます。

たとえば、多くのコマンドラインアプリはシステムの HTTP/HTTPS プロキシを参照しないため、Proxyman で通信をキャプチャできません。これを解決するには、次のいずれかの方法があります：

* HTTP/HTTPS プロキシを明示的に設定する。設定は複雑になることがあり、使用しているネットワークライブラリによって異なります。詳しくは [3rd-party のネットワークライブラリからリクエストが見えない](https://proxyman.com/docs/ja/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries) をお読みください。
* Reverse Proxy を使用する。

Reverse Proxy は Proxyman 2.29.0 以降で利用できます。

## 2. メリット {#2-benefit}

* クライアントを Proxyman のローカル Web サーバーに接続すると、Proxyman が通信をリモートホストへ転送します。クライアントに HTTP/HTTPS プロキシを設定する必要はありません。
* Charles Proxy から Reverse Proxy の設定をインポートできます。
* Host ヘッダーを維持します。
* 新しいエントリを作成すると、Proxyman が利用可能なポートを自動的に選択します。
* Reverse Proxy の通信にも Breakpoint、Map Local、Scripting を使用できます 💯

## 3. 使い方 {#3-how-to-use}

1. **Tools** メニュー -> **Reverse Proxy…** を開きます。
2. 新しいエントリを作成し、Remote Host と Remote Port を入力します。Local Port は Proxyman が自動的に選択します。別のポートに変更することもできますが、そのポートは利用可能である必要があります。
3. 保存します。
4. クライアントアプリで、URL を `http://localhost:<local_port>`（例：`http://localhost:10000`）に変更します。
5. リクエストを送信し、Proxyman アプリで通信を確認します。

![ローカルポート 10000 を httpbin.proxyman.app のポート 443 にマッピングする httpbin のエントリが表示されている、Proxyman の Reverse Proxy ウィンドウ](https://proxyman.com/docs/assets/proxyman-reverse-proxy-window.jpg)

_Reverse Proxy ウィンドウ_

![ローカルポート 10000、リモートホスト httpbin.proxyman.app、リモートポート 443 が設定された Proxyman の Reverse Proxy エントリエディタ](https://proxyman.com/docs/assets/proxyman-reverse-proxy-entry-editor.jpg)

_Reverse Proxy のエントリ_

> **備考:** Remote Port が 443 の場合、Proxyman はリモートサーバーと SSL ハンドシェイクを行います。それ以外の場合は、リモートサーバーを通常の HTTP Web サーバーとして扱います。
>
> Proxyman 5.17.0 以降では、**Force Using SSL when connecting to Remote Port** をオンにすると、任意のリモートポートで SSL/TLS を使用できます。

> **備考:** **Preserve Host in Header fields** をオンにすると、元の Host の値が保持されます。Host の値が一致しない場合、リモートサーバーがリクエストを拒否することがあるため、注意して使用してください。

## 詳細情報 {#learn-more}

* [HTTP プロキシを使用しないアプリから HTTP/HTTPS をキャプチャする Reverse Proxy の使い方](https://proxyman.com/posts/2023-03-22-How-to-use-Reverse-Proxy)
