我正在使用 Apache 2.2.15 作为在 Scientific Linux 6 上运行的反向代理。它用于将应用程序连接到远程服务器,其中所连接的应用程序要求 CONNECT 请求通过且主体完整。
代理正确接收连接:
CONNECT <destinationhost>:6220 HTTP/1.1
但目标服务器收到此信息:
[17/Jun/2014:15:01:13 +0200] "CONNECT / HTTP/1.1" 400 346 "-" "-"
那么在代理内部的某个地方,CONNECT 主体被“剥离”了?所有其他请求方法都工作正常,只有使用 CONNECT 时才会出现问题。无论使用 TLS 还是不使用 TLS,都会发生这种情况。所有标头似乎都正确通过。
我的代理配置如下:
<VirtualHost *:80>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://destinationhost:8082/
ProxyPassReverse / http://destinationhost:8082/
</VirtualHost>
我已尝试指令“AllowCONNECT 6220”并使用 RewriteRules 进行代理,但它们似乎没有什么区别。
使用简单的 telnet 测试以及使用在本地 Ubuntu 机器上运行的 Apache 作为代理时,结果相同。那么,这是 CONNECT 的正常行为吗?问题实际上是在目标上运行的应用程序,期望“格式错误”的 CONNECT 请求?
如果不是,那么可能是什么问题?