通过 Apache 代理时,HTTP CONNECT 请求正文缩减为 /

通过 Apache 代理时,HTTP CONNECT 请求正文缩减为 /

我正在使用 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 请求?

如果不是,那么可能是什么问题?

相关内容