サーバーでnginxを実行し、ポート80と433をリッスンしています。nginxにはポート転送の方法がいくつかあり、次のようにリクエストを転送できます: http:// myserver:80/subdir1 次のようなアドレスに: http:// myserver:8888 。
私の質問は、[〜#〜] non [〜#〜]-httpリクエストを転送できるようにnginxを構成することは可能です(それらだけplain TCP connection)他のポートへ?最初のバイトがhttpリクエストであるかどうかをテストするのは非常に簡単です「GET」または「POST」のいずれかです。これが例です。
Nginxに接続しているクライアント。クライアントは以下を送信します:
a。 HTTP getリクエスト: "GET/HTTP 1.1":HTTPのルール
b。 HTTPヘッダーとして認識できないバイト:他のポート、たとえば888、999などに転送します。
技術的に可能ですか?それとも、これを行う方法を提案しますか?
これは確かに技術的に可能です。
nginx_tcp_proxy_module または HAproxy と呼ばれるnginxモジュールのようなオープンソースのtcpプロキシを変更できます。
または、上記のようなnginxモジュールを作成して、これを行うこともできます。
Nginx 1.9.0以降で可能です:
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
これらの線に沿った何か(これはnginx.conf
のトップレベルになります):
stream {
upstream backend {
server backend1.example.com:12345;
}
server {
listen 12345;
proxy_pass backend;
}
}
hTTPを使用したnginxリモートプロキシの場合、クライアントはHTTP CONNECTコマンドを使用できます。その後、クライアントはリモートポートに接続し、すべてのデータを「生」として転送します(または少なくともそう思います)。