我有一台 CentOS 6.4 服务器,装有 Apache 2.2.15。
我想为 ftps 服务器设置代理。以下是我的配置:
<VirtualHost *:8001>
DocumentRoot /var/www/html/root
RewriteEngine On
SSLProxyEngine on
SSLProxyMachineCertificateFile "ssl/cert.pem"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ftp://IP:990/
ProxyPassReverse / ftp://IP:990/
ErrorLog logs/proxy.error.log
CustomLog logs/proxy.access.log common
</VirtualHost>
当我尝试执行代理 URL 时:
curl -ik http://localhost:8001/
我在日志中收到以下响应:
[Tue Dec 10 13:17:22 2013] [error] [client IP] proxy: SSL/TLS required on the control channel returned by /
有人知道如何解决吗?
提前致谢。
答案1
在您的设置中,您从 Web 服务器到 FTP 服务器设置的 FTP 连接是普通 FTP(ftp://
),而不是 FTP over SSL(FTPS) ProxyPass / ftp://IP:990/
。
您的错误消息可能表明 IP:990 中的 FTPS 服务器拒绝了未加密的连接。
据我所知,Apache mod_proxy_ftp 模块不支持 FTPS。
答案2
启动此 Web 服务器时您没有收到警告吗?因为我认为您不能将 vhost 定义与通配符结合使用,这是由于 SSL 的性质所致。
每个 SSL (v)host 只能使用 1 个特定 IP。在 vhost 配置中定义此 IP 时,您需要使用唯一的 IP。
这意味着:
Listen 192.168.0.1:8001
NameVirtualHost 192.168.0.1:8001
<VirtualHost 192.168.0.1:8001>
...
</VirtualHost>