我在nginx中使用以下配置来代理RDP连接:
server {
listen 80;
server_name domain.com;
location / {
proxy_pass http://192.168.0.100:3389;
}
}
但连接没有通过。我的猜测是http
中的问题是proxy_pass
。谷歌搜索“Nginx RDP”没有太大的收益。
任何人都知道这是否可能,如果是,如何?
答案 0 :(得分:3)
实际上你是对的http
是问题,但不完全是代码块中的问题。让我们解释一下:
在nginx.conf
文件中,您有类似的内容:
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
答案 1 :(得分:0)
对于任何想要使用Nginx来平衡RDP连接的人来说,这就是我所做的:
像往常一样配置nginx,将HTTP(S)流量重新路由到所需的服务器。
在该服务器上,安装myrtille(它需要IIS和.Net 4.5),您就可以从浏览器进入服务器RDP了!