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