Nginxで以下の設定を使用してRDP接続をプロキシしています:
server {
listen 80;
server_name domain.com;
location / {
proxy_pass http://192.168.0.100:3389;
}
}
しかし、接続は通過しません。私の推測では、問題はproxy_pass
のhttp
です。 「Nginx RDP」をグーグルで動かしても、あまり成果はありませんでした。
誰もがそれが可能かどうか、そして可能であればどのように知っていますか?
まあ、あなたは正しいですhttp
が問題ですが、コードブロックの問題ではありません。少し説明しましょう:
あなたのnginx.conf
fileあなたはこれに似たものを持っています:
http {
...
...
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
したがって、confファイルに書き込むものはすべて、このhttp
ブロック/スコープ内にあります。ただし、rdpは異なりますhttpは別のプロトコルです。
Nginxがこれを処理するために知っている唯一の回避策は、tcp
レベルで動作することです。
だからあなたのnginx.conf
およびhttp
ブロックの外では、次のようにstream
ブロックを宣言する必要があります。
stream {
# ...
server {
listen 80;
proxy_pass 192.168.0.100:3389;
}
}
上記の構成では、当然のことながらtcpレイヤーでバックエンドをプロキシするだけです。お気づきかもしれませんが、server_name
属性を使用すると、stream
スコープでは使用できなくなり、さらにhttp
レベルのロギング機能がすべて失われます。
このトピックの詳細については、 docs を確認してください
Nginxを使用してRDP接続の負荷分散を検討している人のために、ここに私がやったことを示します。
通常どおりにnginxを構成して、HTTP(S)トラフィックを目的のサーバーに再ルーティングします。
そのサーバーに myrtille をインストールします(IISと.Net 4.5が必要です)と、ブラウザーからサーバーにRDPできるようになります!