web-dev-qa-db-ja.com

リモートサーバーをローカルホストとしてプロキシする

「remotehost:some_port」で実行されているサーバーがあります。 telnet remotehost remoteportのようなLinuxマシンから接続できます。 Linuxマシンに、サーバーの実行を想定している127.0.0.1:7576に接続するように構成されたアプリケーションがあります。代わりにリモートサーバーに接続するように構成を変更できますが、構成を変更する必要がないようにリモートサーバーをプロキシする方法はありますか? sshポートバインディング(ssh -L...など)を実行できますが、リモートサーバーはsshを実行しません。ローカルホストでリッスンしてパケットをリモートサーバーに転送するプロセスを作成する以外に簡単な方法はありますか?

1
balki

これを行う1つの方法は、nginxなどのプロキシをローカルで実行することです。 documentation は、関連する例でかなり良いです。

最小限でありながらより完全な例を次に示します。

worker_processes auto;
error_log error.log;
events { }
stream {
  server {
    listen 127.0.0.1:7576;
    proxy_pass REMOTE_Host:7576;
  }
}

以下は、nginx.confという名前のファイルで上記の構成を使用してフォアグラウンドでnginxを実行する例です。

nginx -p $PWD -c nginx.conf -g "daemon off; pid nginx.pid; error_log /dev/stderr;"

-gオプションは、グローバル構成を提供します。 daemon offは、フォアグラウンドで実行するためのものです。 pid nginx.pidは、pidファイルを作業ディレクトリに配置します。これは、デフォルトでは、おそらく存在しないログディレクトリに配置されるためです。 error_log /dev/stderrコンソールにエラーログを送信します。-gで実行する場合は、これをdaemon offオプションに含める必要があることがわかりました。そうしないと、読み取る前にデフォルトの場所にログを記録しようとする場合があります。ファイルからのerror_log構成。

1
mjb2kmn