<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 模块

Apache 模块 mod_proxy_ftp

可用语言:  en  |  fr 

描述用于 mod_proxy 的 FTP 支持模块
状态扩展
模块标识符proxy_ftp_module
源文件mod_proxy_ftp.c

摘要

此模块需要 mod_proxy 的服务。它提供对代理 FTP 站点的支持。请注意,FTP 支持目前仅限于 GET 方法。

因此,为了获得处理 FTP 代理请求的能力,mod_proxymod_proxy_ftp 必须存在于服务器中。

警告

在您 保护您的服务器 之前,请勿启用代理。开放代理服务器对您的网络和整个互联网都构成危险。

Support Apache!

主题

指令

错误修复清单

另请参见

top

为什么文件类型 xxx 无法通过 FTP 下载?

您可能没有在代理的 mime.types 配置文件中将该特定文件类型定义为 application/octet-stream。一个有用的行可以是

application/octet-stream   bin dms lha lzh exe class tgz taz

或者,您可能更喜欢使用 ForceType 指令将所有内容默认设置为二进制

ForceType application/octet-stream
top

如何强制 FTP ASCII 下载文件 xxx

在您必须使用 FTP ASCII 传输方法下载特定文件的罕见情况下(而默认传输模式为 binary),您可以通过在请求中添加 ;type=a 来覆盖 mod_proxy 的默认设置,以强制进行 ASCII 传输。(但是,FTP 目录列表始终以 ASCII 模式执行。)

top

如何进行 FTP 上传?

目前,mod_proxy 中的 FTP 仅支持 GET。当然,您可以通过 Apache 代理使用 HTTP 上传(POST 或 PUT)。

top

如何访问我的主目录之外的 FTP 文件?

FTP URI 相对于登录用户的 home 目录进行解释。不幸的是,要访问更高目录级别,您不能使用 /../,因为点由浏览器解释,而不是实际发送到 FTP 服务器。为了解决这个问题,所谓的 Squid %2f hack 在 Apache FTP 代理中实现;它是一个解决方案,也被其他流行的代理服务器(如 Squid Proxy Cache)使用。通过在请求路径之前添加 /%2f,您可以使代理将 FTP 起始目录更改为 /(而不是 home 目录)。例如,要检索文件 /etc/motd,您将使用 URL

ftp://user@host/%2f/etc/motd

top

如何在浏览器的 URL 行中隐藏 FTP 明文密码?

要通过用户名和密码登录 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 访问您的个人文件)之前,您应该三思而后行!当使用不安全的通道时,窃听者可能会在传输过程中拦截您的密码。

top

为什么当我期望下载文件时,我得到一个文件列表?

为了允许同时浏览 FTP 服务器上的目录和下载文件,Apache 会查看请求 URL。如果它看起来像一个目录,或者包含通配符字符("*?[{~"),那么它会猜测需要一个列表而不是下载。

您可以禁用对包含通配符字符的名称的特殊处理。请参阅 ProxyFtpListOnWildcard 指令。

top

ProxyFtpDirCharset 指令

描述定义代理 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 目录列表设置的字符集。

top

ProxyFtpEscapeWildcards 指令

描述是否在发送到 FTP 服务器时转义请求文件名中的通配符
语法ProxyFtpEscapeWildcards on|off
默认值ProxyFtpEscapeWildcards on
上下文服务器配置、虚拟主机、目录
状态扩展
模块mod_proxy_ftp
兼容性在 Apache 2.3.3 及更高版本中可用

ProxyFtpEscapeWildcards 指令控制是否在将请求文件名发送到 FTP 服务器之前,使用反斜杠转义文件名中的通配符字符("*?[{~")。这是默认行为,但许多 FTP 服务器不知道转义,并尝试提供发送给它们的文字文件名,包括名称中的反斜杠。

设置为“off”以允许从不理解通配符转义的 FTP 服务器下载包含通配符的名称的文件。

top

ProxyFtpListOnWildcard 指令

描述请求文件名中的通配符是否触发文件列表
语法ProxyFtpListOnWildcard on|off
默认值ProxyFtpListOnWildcard on
上下文服务器配置、虚拟主机、目录
状态扩展
模块mod_proxy_ftp
兼容性在 Apache 2.3.3 及更高版本中可用

ProxyFtpListOnWildcard 指令控制请求文件名中的通配符字符("*?[{~")是否导致 mod_proxy_ftp 返回文件列表而不是下载文件。默认情况下(值 on),它们会这样做。

设置为“off”以允许下载文件,即使它们在名称中包含通配符字符。

可用语言:  en  |  fr 

top

评论

注意
这不是一个问答部分。此处发布的评论应指向有关改进文档或服务器的建议,如果它们被实施或被认为无效/主题不相关,可能会被我们的版主删除。有关如何管理 Apache HTTP Server 的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的 邮件列表