Apache 模块 mod_proxy_ftp

Description:mod_proxy的 FTP 支持模块
Status:Extension
Module Identifier:proxy_ftp_module
Source File:mod_proxy_ftp.c

Summary

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

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

Warning

在拥有保护您的服务器之前,不要启用代理。开放式代理服务器对您的网络和整个 Internet 都是危险的。

为什么不能通过 FTP 下载 xxx 类型的文件?

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

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

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

ForceType application/octet-stream

如何强制通过 FTP ASCII 下载文件 xxx?

在极少数情况下,您必须使用 FTP ASCII传输方法下载特定文件(默认传输处于binary模式),可以通过在请求后缀;type=a以强制 ASCII 传输来覆盖mod_proxy的默认值。 (但是,FTP 目录列表始终以 ASCII 模式执行.)

如何上传 FTP?

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

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

FTP URI 是相对于登录用户的主目录来解释的。A,要进入更高的目录级别,您不能使用/../,因为点是由浏览器解释的,实际上并未发送给 FTP 服务器。为了解决这个问题,在 Apache FTP 代理中实现了所谓的 Squid%2f hack;这是一个解决方案,其他流行的代理服务器(例如鱿鱼代理缓存)也使用了该解决方案。通过在请求的路径前加上/%2f,可以使该代理将 FTP 起始目录更改为/(而不是主目录)。例如,要检索文件/etc/motd,您将使用以下 URL:

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

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

要通过用户名和密码登录 FTP 服务器,Apache 使用不同的策略。在网址中完全没有用户名和密码的情况下,Apache 将匿名登录发送到 FTP 服务器

user: anonymous password: apache-proxy@

这适用于所有配置为匿名访问的流行 FTP 服务器。

对于使用特定用户名的个人登录,您可以将用户名嵌入 URL 中,例如:

ftp://username@host/myfile

如果 FTP 服务器在提供该用户名时要求 Importing 密码(应该如此),则 Apache 将以401(需要授权)答复,这将导致浏览器弹出用户名/密码对话框。Importing 密码后,将重试连接尝试,如果成功,将显示请求的资源。此过程的优势在于,浏览器不会以明文形式显示密码(如果您使用过,则不会显示该密码)。

ftp://username:password@host/myfile

首先)。

Note

以这种方式发送的密码在其途中未加密。它以 base64 编码的明 Literals 符串在浏览器和 Apache 代理服务器之间传播,在 Apache 代理和 FTP 服务器之间以纯文本形式传播。因此,在通过 HTTP 访问 FTP 服务器之前(或完全通过 FTP 访问个人文件之前,您应该三思而后行)。当使用不安全的通道时,窃听者可能会在途中拦截您的密码。

当我希望下载文件时,为什么会得到文件列表?

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

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

ProxyFtpDirCharset Directive

Description:定义代理 FTP 列表的字符集
Syntax:ProxyFtpDirCharset character_set
Default:ProxyFtpDirCharset ISO-8859-1
Context:服务器配置,虚拟主机,目录
Status:Extension
Module:mod_proxy_ftp
Compatibility:在 Apache 2.2.7 和更高版本中可用。从 Apache 2.3.5 中的mod_proxy移动。

ProxyFtpDirCharset指令定义要为mod_proxy_ftp生成的 HTML 中的 FTP 目录列表设置的字符集。

ProxyFtpEscapeWildcards Directive

Description:发送到 FTP 服务器时,请求的文件名中的通配符是否转义
Syntax:ProxyFtpEscapeWildcards on|off
Default:ProxyFtpEscapeWildcards on
Context:服务器配置,虚拟主机,目录
Status:Extension
Module:mod_proxy_ftp
Compatibility:在 Apache 2.3.3 和更高版本中可用

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

设置为“关闭”以允许从不理解通配符转义的 FTP 服务器下载名称中带有通配符的文件。

ProxyFtpListOnWildcard Directive

Description:请求的文件名中的通配符是否触发文件列表
Syntax:ProxyFtpListOnWildcard on|off
Default:ProxyFtpListOnWildcard on
Context:服务器配置,虚拟主机,目录
Status:Extension
Module:mod_proxy_ftp
Compatibility:在 Apache 2.3.3 和更高版本中可用

ProxyFtpListOnWildcard指令控制通配符(“ *? [{~") in requested filenames cause mod_proxy_ftp”是否返回文件列表而不是下载文件。默认情况下(值为 on),它们会这样做。

设置为“关”以允许下载文件,即使文件名中包含通配符。