On this page
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_proxy和mod_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),它们会这样做。
设置为“关”以允许下载文件,即使文件名中包含通配符。