Apache HTTP Server 版本 2.4
描述 | 用于 mod_proxy 的 FTP 支持模块 |
---|---|
状态 | 扩展 |
模块标识符 | proxy_ftp_module |
源文件 | mod_proxy_ftp.c |
此模块需要 mod_proxy
的服务。它提供对代理 FTP 站点的支持。请注意,FTP 支持目前仅限于 GET 方法。
因此,为了获得处理 FTP 代理请求的能力,mod_proxy
和 mod_proxy_ftp
必须存在于服务器中。
在您 保护您的服务器 之前,请勿启用代理。开放代理服务器对您的网络和整个互联网都构成危险。
您可能没有在代理的 mime.types 配置文件中将该特定文件类型定义为 application/octet-stream
。一个有用的行可以是
application/octet-stream bin dms lha lzh exe class tgz taz
或者,您可能更喜欢使用 ForceType
指令将所有内容默认设置为二进制
ForceType application/octet-stream
在您必须使用 FTP ASCII
传输方法下载特定文件的罕见情况下(而默认传输模式为 binary
),您可以通过在请求中添加 ;type=a
来覆盖 mod_proxy
的默认设置,以强制进行 ASCII 传输。(但是,FTP 目录列表始终以 ASCII 模式执行。)
目前,mod_proxy
中的 FTP 仅支持 GET。当然,您可以通过 Apache 代理使用 HTTP 上传(POST 或 PUT)。
FTP URI 相对于登录用户的 home 目录进行解释。不幸的是,要访问更高目录级别,您不能使用 /../,因为点由浏览器解释,而不是实际发送到 FTP 服务器。为了解决这个问题,所谓的 Squid %2f hack 在 Apache FTP 代理中实现;它是一个解决方案,也被其他流行的代理服务器(如 Squid Proxy Cache)使用。通过在请求路径之前添加 /%2f
,您可以使代理将 FTP 起始目录更改为 /
(而不是 home 目录)。例如,要检索文件 /etc/motd
,您将使用 URL
ftp://user@host/%2f/etc/motd
要通过用户名和密码登录 FTP 服务器,Apache 使用不同的策略。如果 URL 中完全没有用户名和密码,Apache 会向 FTP 服务器发送匿名登录,即,
用户:anonymous
密码:apache-proxy@
这适用于所有为匿名访问配置的流行 FTP 服务器。
对于使用特定用户名的个人登录,您可以将用户名嵌入到 URL 中,例如
ftp://username@host/myfile
如果 FTP 服务器在给出此用户名时要求密码(它应该这样做),那么 Apache 将回复 401
(需要授权)响应,这会导致浏览器弹出用户名/密码对话框。输入密码后,连接尝试将重新尝试,如果成功,则会显示请求的资源。此过程的优点是您的浏览器不会以明文显示密码(如果您使用了
ftp://username:password@host/myfile
首先)。
以这种方式传输的密码在传输过程中不会被加密。它以 base64 编码的明文字符串在您的浏览器和 Apache 代理服务器之间传输,并在 Apache 代理和 FTP 服务器之间以明文形式传输。因此,在通过 HTTP 访问您的 FTP 服务器(或通过 FTP 访问您的个人文件)之前,您应该三思而后行!当使用不安全的通道时,窃听者可能会在传输过程中拦截您的密码。
为了允许同时浏览 FTP 服务器上的目录和下载文件,Apache 会查看请求 URL。如果它看起来像一个目录,或者包含通配符字符("*?[{~"),那么它会猜测需要一个列表而不是下载。
您可以禁用对包含通配符字符的名称的特殊处理。请参阅 ProxyFtpListOnWildcard
指令。
描述 | 定义代理 FTP 列表的字符集 |
---|---|
语法 | ProxyFtpDirCharset character_set |
默认值 | ProxyFtpDirCharset ISO-8859-1 |
上下文 | 服务器配置、虚拟主机、目录 |
状态 | 扩展 |
模块 | mod_proxy_ftp |
兼容性 | 在 Apache 2.2.7 及更高版本中可用。在 Apache 2.3.5 中从 mod_proxy 移动。 |
ProxyFtpDirCharset
指令定义要为 mod_proxy_ftp
生成的 HTML 中的 FTP 目录列表设置的字符集。
描述 | 是否在发送到 FTP 服务器时转义请求文件名中的通配符 |
---|---|
语法 | ProxyFtpEscapeWildcards on|off |
默认值 | ProxyFtpEscapeWildcards on |
上下文 | 服务器配置、虚拟主机、目录 |
状态 | 扩展 |
模块 | mod_proxy_ftp |
兼容性 | 在 Apache 2.3.3 及更高版本中可用 |
ProxyFtpEscapeWildcards
指令控制是否在将请求文件名发送到 FTP 服务器之前,使用反斜杠转义文件名中的通配符字符("*?[{~")。这是默认行为,但许多 FTP 服务器不知道转义,并尝试提供发送给它们的文字文件名,包括名称中的反斜杠。
设置为“off”以允许从不理解通配符转义的 FTP 服务器下载包含通配符的名称的文件。
描述 | 请求文件名中的通配符是否触发文件列表 |
---|---|
语法 | ProxyFtpListOnWildcard on|off |
默认值 | ProxyFtpListOnWildcard on |
上下文 | 服务器配置、虚拟主机、目录 |
状态 | 扩展 |
模块 | mod_proxy_ftp |
兼容性 | 在 Apache 2.3.3 及更高版本中可用 |
ProxyFtpListOnWildcard
指令控制请求文件名中的通配符字符("*?[{~")是否导致 mod_proxy_ftp
返回文件列表而不是下载文件。默认情况下(值 on),它们会这样做。
设置为“off”以允许下载文件,即使它们在名称中包含通配符字符。