ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Apache模块 mod_proxy_ftp | [说明](#calibre_link-11) | `mod_proxy`的FTP支持模块 | | --- | --- | | [状态](#calibre_link-12) | 扩展(E) | | [模块名](#calibre_link-13) | proxy_ftp_module | | [源文件](#calibre_link-14) | proxy_ftp.c | ### 概述 本模块提供了代理FTP站点的能力,它需要`mod_proxy`提供的服务。这样,为了能处理FTP代理请求,模块`mod_proxy`和`mod_proxy_ftp`必须同时存在于服务器中。 注意:目前对FTP的支持仅限于GET方法。 ### 警告 在您没有[对您的服务器采取安全措施](#calibre_link-290)之前,不要启用代理。开放的代理服务器对你自己的内部网络和大规模的Internet网都是有安全隐患的。 ## 为什么xxx类型的文件不能从FTP下载? 您可能没有在您的代理mime类型配置文件中定义特定的文件类型`application/octet-stream` 。有用的一行可能是这样的: ``` application/octet-stream bin dms lha lzh exe class tgz taz ``` 作为另一种选择,你可能希望将所有东西都看成二进制类型: ``` DefaultType application/octet-stream ``` ## 如何强制文件xxx使用FTP的ASCII形式下载? 在很罕见的情况下,也许您想要用FTP的`ASCII`传输模式(默认是`binary`模式)来下载某个特定的文件,您可以用在请求前面加上"`;type=a`"前缀的方式覆盖`mod_proxy`的默认值来强制进行ASCII模式的传输。但是不论如何,FTP目录列表将始终以ASCII模式执行。 ## 我如何使用FTP上传? 目前,mod_proxy仅支持FTP的GET方法,因此不支持使用FTP上传。你可以通过Apache代理改用HTTP上传(POST或PUT)。 ## 我如何能访问我自己home目录以外的FTP文件? 一个FTP URI一般被当成登录用户home目录的相对路径处理。唉,可惜您不能使用"/../"来到达更上层的目录,因为点(.)由浏览器解释而不会真正发送给FTP服务器。为搞定这个问题,在Apache FTP代理中实现了一个"&lt;dfn class="calibre27"&gt;Squid %2f hack&lt;/dfn&gt;"。这是一个也被其它流行的类似[Squid Proxy Cache](http://www.squid-cache.org/)的代理服务器使用的解决方法。使用预先将"`/%2f`"加入您请求路径的方法,您能使代理将FTP起始目录改为"`/`"(而不是home目录)。例如,为了取得文件`/etc/motd` ,您应当使用下面这样的URL : ``` ftp://<var class="calibre40">user</var>@<var class="calibre40">host</var>/%2f/etc/motd ``` ## 我如何才能在浏览器的URL框中隐藏FTP的明文密码? 使用用户名和密码登入一个FTP服务器时,Apache使用了不同的策略。当URL中不存在用户名和密码时,Apache会向FTP服务器发出一个匿名用户的登录,比如说: ``` user: anonymous password: apache_proxy@ ``` 这对于配置了匿名访问的大多数FTP服务器来说是很有效的。 要使用特定的用户名,可以将这个特定的用户名嵌入URL中: ``` ftp://<var class="calibre40">username</var>@<var class="calibre40">host</var>/myfile ``` 如果在给出了这个用户名后,FTP服务器要求提供一个密码(这是它应该做的),这时Apache会回应一个"`401`"(需要认证)应答,这将会使浏览器弹出一个用户名/密码对话框。当输入了密码后,将会再次尝试连接,如果成功,则请求的资源就会被下载。这种方法的好处在于您的浏览器不会以明码的形式显示密码,而当您使用 ``` ftp://<var class="calibre40">username</var>:<var class="calibre40">password</var>@<var class="calibre40">host</var>/myfile ``` 的时候就无法做到这一点。 ### 注意 这种方法提交的密码在传输的时候没有进行加密。它在您的浏览器到Apache代理服务器之间传输时为base64格式的明文字符串,而在Apache代理服务器和FTP服务器之间传输的为普通文本。所以,在通过HTTP访问您的FTP服务器之前(或通过FTP访问您的私人文件之前)您应该慎重考虑一下。当使用这种不安全的手段时,一个窃听者可能会用这种方法截取您的密码。