1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>mod_proxy_ftp - Apache HTTP Server</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
17 <div id="page-header">
18 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
19 <p class="apache">Apache HTTP Server Version 2.5</p>
20 <img alt="" src="../images/feather.gif" /></div>
21 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
23 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
24 <div id="page-content">
25 <div id="preamble"><h1>Apache Module mod_proxy_ftp</h1>
27 <p><span>Available Languages: </span><a href="../en/mod/mod_proxy_ftp.html" title="English"> en </a></p>
29 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>FTP support module for
30 <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
31 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
32 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>proxy_ftp_module</td></tr>
33 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_proxy_ftp.c</td></tr></table>
36 <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the proxying
37 FTP sites. Note that FTP support is currently limited to
40 <p>Thus, in order to get the ability of handling FTP proxy requests,
41 <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> and <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>
42 have to be present in the server.</p>
44 <div class="warning"><h3>Warning</h3>
45 <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
46 servers are dangerous both to your network and to the Internet at
50 <div id="quickview"><h3 class="directives">Directives</h3>
52 <li><img alt="" src="../images/down.gif" /> <a href="#proxyftpdircharset">ProxyFtpDirCharset</a></li>
53 <li><img alt="" src="../images/down.gif" /> <a href="#proxyftpescapewildcards">ProxyFtpEscapeWildcards</a></li>
54 <li><img alt="" src="../images/down.gif" /> <a href="#proxyftplistonwildcard">ProxyFtpListOnWildcard</a></li>
58 <li><img alt="" src="../images/down.gif" /> <a href="#mimetypes">Why doesn't file type <var>xxx</var>
59 download via FTP?</a></li>
60 <li><img alt="" src="../images/down.gif" /> <a href="#type">How can I force an FTP ASCII download of
61 File <var>xxx</var>?</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#ftpnonget">How can I do FTP upload?</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#percent2fhck">How can I access FTP files outside
64 of my home directory?</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#ftppass">How can I hide the FTP cleartext password
66 in my browser's URL line?</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#wildcard">Why do I get a file listing when I expected
68 a file to be downloaded?</a></li>
69 </ul><h3>See also</h3>
71 <li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
73 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
75 <h2><a name="mimetypes" id="mimetypes">Why doesn't file type <var>xxx</var>
76 download via FTP?</a></h2>
77 <p>You probably don't have that particular file type defined as
78 <code>application/octet-stream</code> in your proxy's mime.types
79 configuration file. A useful line can be</p>
81 <div class="example"><pre>application/octet-stream bin dms lha lzh exe class tgz taz</pre></div>
82 <p>Alternatively you may prefer to default everything to binary:</p>
83 <div class="example"><pre class="prettyprint lang-config">ForceType application/octet-stream</pre>
85 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
87 <h2><a name="type" id="type">How can I force an FTP ASCII download of
88 File <var>xxx</var>?</a></h2>
89 <p>In the rare situation where you must download a specific file using the
90 FTP <code>ASCII</code> transfer method (while the default transfer is in
91 <code>binary</code> mode), you can override <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>'s
92 default by suffixing the request with <code>;type=a</code> to force an
93 ASCII transfer. (FTP Directory listings are always executed in ASCII mode,
95 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
97 <h2><a name="ftpnonget" id="ftpnonget">How can I do FTP upload?</a></h2>
98 <p>Currently, only GET is supported for FTP in mod_proxy. You can
99 of course use HTTP upload (POST or PUT) through an Apache proxy.</p>
100 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
101 <div class="section">
102 <h2><a name="percent2fhck" id="percent2fhck">How can I access FTP files outside
103 of my home directory?</a></h2>
104 <p>An FTP URI is interpreted relative to the home directory of the user
105 who is logging in. Alas, to reach higher directory levels you cannot
106 use /../, as the dots are interpreted by the browser and not actually
107 sent to the FTP server. To address this problem, the so called <dfn>Squid
108 %2f hack</dfn> was implemented in the Apache FTP proxy; it is a
109 solution which is also used by other popular proxy servers like the <a href="http://www.squid-cache.org/">Squid Proxy Cache</a>. By
110 prepending <code>/%2f</code> to the path of your request, you can make
111 such a proxy change the FTP starting directory to <code>/</code> (instead
112 of the home directory). For example, to retrieve the file
113 <code>/etc/motd</code>, you would use the URL:</p>
115 <div class="example"><p><code>
116 ftp://<var>user</var>@<var>host</var>/%2f/etc/motd
118 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
119 <div class="section">
120 <h2><a name="ftppass" id="ftppass">How can I hide the FTP cleartext password
121 in my browser's URL line?</a></h2>
122 <p>To log in to an FTP server by username and password, Apache uses
123 different strategies. In absence of a user name and password in the URL
124 altogether, Apache sends an anonymous login to the FTP server,
127 <div class="example"><p><code>
128 user: anonymous<br />
129 password: apache_proxy@
132 <p>This works for all popular FTP servers which are configured for
133 anonymous access.</p>
135 <p>For a personal login with a specific username, you can embed the user
136 name into the URL, like in:</p>
138 <div class="example"><p><code>
139 ftp://<var>username</var>@<var>host</var>/myfile
142 <p>If the FTP server asks for a password when given this username (which
143 it should), then Apache will reply with a <code>401</code> (Authorization
144 required) response, which causes the Browser to pop up the
145 username/password dialog. Upon entering the password, the connection
146 attempt is retried, and if successful, the requested resource is
147 presented. The advantage of this procedure is that your browser does not
148 display the password in cleartext (which it would if you had used</p>
150 <div class="example"><p><code>
151 ftp://<var>username</var>:<var>password</var>@<var>host</var>/myfile
154 <p>in the first place).</p>
156 <div class="note"><h3>Note</h3>
157 <p>The password which is transmitted in such a way is not encrypted on
158 its way. It travels between your browser and the Apache proxy server in
159 a base64-encoded cleartext string, and between the Apache proxy and the
160 FTP server as plaintext. You should therefore think twice before
161 accessing your FTP server via HTTP (or before accessing your personal
162 files via FTP at all!) When using insecure channels, an eavesdropper
163 might intercept your password on its way.</p>
165 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
166 <div class="section">
167 <h2><a name="wildcard" id="wildcard">Why do I get a file listing when I expected
168 a file to be downloaded?</a></h2>
169 <p>In order to allow both browsing the directories on an FTP server and
170 downloading files, Apache looks at the request URL. If it looks like
171 a directory, or contains wildcard characters ("*?[{~"), then it
172 guesses that a listing is wanted instead of a download.</p>
173 <p>You can disable the special handling of names with wildcard characters.
174 See the <code class="directive">ProxyFtpListOnWildcard</code> directive.
177 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
178 <div class="directive-section"><h2><a name="ProxyFtpDirCharset" id="ProxyFtpDirCharset">ProxyFtpDirCharset</a> <a name="proxyftpdircharset" id="proxyftpdircharset">Directive</a></h2>
179 <table class="directive">
180 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define the character set for proxied FTP listings</td></tr>
181 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyFtpDirCharset <var>character set</var></code></td></tr>
182 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ProxyFtpDirCharset ISO-8859-1</code></td></tr>
183 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
184 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
185 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_ftp</td></tr>
186 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.7 and later. Moved from <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> in Apache 2.3.5.</td></tr>
188 <p>The <code class="directive">ProxyFtpDirCharset</code> directive defines the
189 character set to be set for FTP directory listings in HTML generated by
190 <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>.</p>
193 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
194 <div class="directive-section"><h2><a name="ProxyFtpEscapeWildcards" id="ProxyFtpEscapeWildcards">ProxyFtpEscapeWildcards</a> <a name="proxyftpescapewildcards" id="proxyftpescapewildcards">Directive</a></h2>
195 <table class="directive">
196 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether wildcards in requested filenames are escaped when sent to the FTP server</td></tr>
197 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyFtpEscapeWildcards [on|off]</code></td></tr>
198 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>on</code></td></tr>
199 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
200 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
201 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_ftp</td></tr>
202 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache xxx and later</td></tr>
204 <p>The <code class="directive">ProxyFtpEscapeWildcards</code> directive
205 controls whether wildcard characters ("*?[{~") in requested
206 filenames are escaped with backslash before sending them to the
207 FTP server. That is the default behavior, but many FTP servers
208 don't know about the escaping and try to serve the literal filenames
209 they were sent, including the backslashes in the names. </p>
210 <p>Set to "off" to allow downloading files with wildcards
211 in their names from FTP servers that don't understand wildcard
215 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
216 <div class="directive-section"><h2><a name="ProxyFtpListOnWildcard" id="ProxyFtpListOnWildcard">ProxyFtpListOnWildcard</a> <a name="proxyftplistonwildcard" id="proxyftplistonwildcard">Directive</a></h2>
217 <table class="directive">
218 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Whether wildcards in requested filenames trigger a file listing</td></tr>
219 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ProxyFtpListOnWildcard [on|off]</code></td></tr>
220 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>on</code></td></tr>
221 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
222 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
223 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_ftp</td></tr>
224 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache xxx and later</td></tr>
226 <p>The <code class="directive">ProxyFtpListOnWildcard</code> directive
227 controls whether wildcard characters ("*?[{~") in requested
228 filenames cause <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code> to return a listing
229 of files instead of downloading a file. By default (value on),
230 they do. Set to "off" to allow downloading files even if they
231 have wildcard characters in their names.</p>
235 <div class="bottomlang">
236 <p><span>Available Languages: </span><a href="../en/mod/mod_proxy_ftp.html" title="English"> en </a></p>
237 </div><div id="footer">
238 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
239 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
240 if (typeof(prettyPrint) !== undefined) {