Ale*_*lex 6 proxy https remote-desktop-services windows-server-2008-r2 apache-2.2
我有一台运行多个虚拟机的小型服务器、一些 Web 服务器以及一个 Windows 2008 R2 远程桌面网关服务器。目的是让 Apache2 服务器在 Ubuntu 11.10 上运行,它将充当反向代理服务器,根据使用的主机名将请求转发到相应的服务器。
我将它用于其他几个 Ubuntu Apache2 服务器和在我的 2008 R2 RD 网关服务器上运行的 IIS7 服务器。
通过工作,我的意思是我可以根据我使用 Web 浏览器访问的主机名,通过 HTTP 和 HTTPS 访问所有这些 Web 服务器。
然而,不起作用的是使用远程桌面网关功能从外部客户端连接到内部 RDP 服务器。
我知道 RD 网关服务器配置正确,因为如果我将外部 HTTPS 流量直接重定向到它的 IP(绕过 apache2 代理服务器),一切正常。当我将 apache2 代理放在中间,并尝试从外部源建立 RDP 连接时,我在 apache 代理 error.log 中收到以下错误:
[error] (70007)The timeout specified has expired: proxy: prefetch request body failed to 192.168.2.172:443 (rdpgw.internal.domain.com) from xx.xx.xx.xx ()
Run Code Online (Sandbox Code Playgroud)
其中 xx.xx.xx.xx 是我的外部客户端的 IP。
远程客户端上的远程桌面客户端会给出一个通用的超时错误,而在 RD 网关服务器上一切似乎都很好。直接连接到 RD 网关服务器时,我可以在 IIS 日志文件中看到:
2012-01-26 11:54:13 192.168.2.172 RPC_IN_DATA /rpc/rpcproxy.dll localhost:3388 443 - xx.xx.xx.xx MSRPC 401 1 2148074254 15
2012-01-26 11:54:13 192.168.2.172 RPC_OUT_DATA /rpc/rpcproxy.dll localhost:3388 443 - xx.xx.xx.xx MSRPC 401 1 2148074254 15
Run Code Online (Sandbox Code Playgroud)
当通过 apache2 代理连接时,我可以看到:
2012-01-26 11:54:53 192.168.2.172 RPC_IN_DATA /rpc/rpcproxy.dll localhost:3388 443 - 192.168.2.170 MSRPC 401 1 2148074254 46
2012-01-26 11:54:53 192.168.2.172 RPC_OUT_DATA /rpc/rpcproxy.dll localhost:3388 443 - 192.168.2.170 MSRPC 401 1 2148074254 31
Run Code Online (Sandbox Code Playgroud)
所以第二种情况下的连接来自 apache2 代理。否则连接似乎是相同的。
关于一件事,我不太确定应该如何设置,是两台服务器上的证书。我知道 HTTPS 在设计上不会被代理服务器“拦截”和转发,所以如果我是对的,这里实际上涉及 2 个单独的 SSL 连接:1 个从远程客户端到 apache 代理,一个来自 apache代理到 RD 网关服务器。我认为最好是远程客户端没有看到差异,所以我在 apache 代理和 RD 网关服务器上使用了相同的自签名证书和私钥。
里面有对应的vhsot apache2 config文件的内容:
<VirtualHost *:443>
ServerName rdgw.externaldomainname.com
ProxyRequests off
ProxyPreserveHost on
ProxyPass / https://rdgw.internal.domain.com/
ProxyPassReverse / https://rdgw.internal.domain.com/
SSLEngine on
SSLProxyEngine on
RequestHeader set Front-End-Https "On"
SSLCertificateFile /etc/apache2/certs/rdgw.externaldomainname.com.crt
SSLCertificateKeyFile /etc/apache2/certs/rdgw.externaldomainname.com.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
希望有人知道如何做到这一点?这应该是可能的,因为我发现这篇 MS 文章描述了如何准确设置此配置,仅使用 MS ISA 作为代理服务器而不是 Ubuntu/Apache2
| 归档时间: |
|
| 查看次数: |
18905 次 |
| 最近记录: |