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
7      -->
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">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body>
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.2</p>
20<img alt="" src="/images/feather.gif" /></div>
21<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
22<div id="path">
23<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.2</a> &gt; <a href="./">Modules</a></div>
24<div id="page-content">
25<div id="preamble"><h1>Apache Module mod_proxy_ftp</h1>
26<div class="toplang">
27<p><span>Available Languages: </span><a href="/en/mod/mod_proxy_ftp.html" title="English">&nbsp;en&nbsp;</a> |
28<a href="/ja/mod/mod_proxy_ftp.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
29</div>
30<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>FTP support module for
31<code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code></td></tr>
32<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
33<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>proxy_ftp_module</td></tr>
34<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>mod_proxy_ftp.c</td></tr></table>
35<h3>Summary</h3>
36
37    <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
38    FTP sites.  Note that FTP support is currently limited to
39    the GET method.</p>
40
41    <p>Thus, in order to get the ability of handling FTP proxy requests,
42    <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>
43    have to be present in the server.</p>
44
45    <div class="warning"><h3>Warning</h3>
46      <p>Do not enable proxying until you have <a href="mod_proxy.html#access">secured your server</a>. Open proxy
47      servers are dangerous both to your network and to the Internet at
48      large.</p>
49    </div>
50</div>
51<div id="quickview"><h3 class="directives">Directives</h3>
52<p>This module provides no
53            directives.</p>
54<h3>Topics</h3>
55<ul id="topics">
56<li><img alt="" src="/images/down.gif" /> <a href="#mimetypes">Why doesn't file type <var>xxx</var>
57    download via FTP?</a></li>
58<li><img alt="" src="/images/down.gif" /> <a href="#type">How can I force an FTP ASCII download of
59    File <var>xxx</var>?</a></li>
60<li><img alt="" src="/images/down.gif" /> <a href="#ftpnonget">How can I do FTP upload?</a></li>
61<li><img alt="" src="/images/down.gif" /> <a href="#percent2fhck">How can I access FTP files outside
62    of my home directory?</a></li>
63<li><img alt="" src="/images/down.gif" /> <a href="#ftppass">How can I hide the FTP cleartext password
64    in my browser's URL line?</a></li>
65</ul><h3>See also</h3>
66<ul class="seealso">
67<li><code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code></li>
68</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
69<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
70<div class="section">
71<h2><a name="mimetypes" id="mimetypes">Why doesn't file type <var>xxx</var>
72    download via FTP?</a></h2>
73      <p>You probably don't have that particular file type defined as
74      <code>application/octet-stream</code> in your proxy's mime.types
75      configuration file. A useful line can be</p>
76
77      <div class="example"><pre>application/octet-stream   bin dms lha lzh exe class tgz taz</pre></div>
78	<p>Alternatively you may prefer to default everything to binary:</p>
79      <div class="example"><pre>DefaultType application/octet-stream</pre></div>
80    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
81<div class="section">
82<h2><a name="type" id="type">How can I force an FTP ASCII download of
83    File <var>xxx</var>?</a></h2>
84      <p>In the rare situation where you must download a specific file using the
85      FTP <code>ASCII</code> transfer method (while the default transfer is in
86      <code>binary</code> mode), you can override <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code>'s
87      default by suffixing the request with <code>;type=a</code> to force an
88      ASCII transfer. (FTP Directory listings are always executed in ASCII mode,
89      however.)</p>
90    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
91<div class="section">
92<h2><a name="ftpnonget" id="ftpnonget">How can I do FTP upload?</a></h2>
93	<p>Currently, only GET is supported for FTP in mod_proxy.  You can
94	of course use HTTP upload (POST or PUT) through an Apache proxy.</p>
95    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
96<div class="section">
97<h2><a name="percent2fhck" id="percent2fhck">How can I access FTP files outside
98    of my home directory?</a></h2>
99      <p>An FTP URI is interpreted relative to the home directory of the user
100      who is logging in. Alas, to reach higher directory levels you cannot
101      use /../, as the dots are interpreted by the browser and not actually
102      sent to the FTP server. To address this problem, the so called <dfn>Squid
103      %2f hack</dfn> was implemented in the Apache FTP proxy; it is a
104      solution which is also used by other popular proxy servers like the <a href="http://www.squid-cache.org/">Squid Proxy Cache</a>. By
105      prepending <code>/%2f</code> to the path of your request, you can make
106      such a proxy change the FTP starting directory to <code>/</code> (instead
107      of the home directory). For example, to retrieve the file
108      <code>/etc/motd</code>, you would use the URL:</p>
109
110      <div class="example"><p><code>
111        ftp://<var>user</var>@<var>host</var>/%2f/etc/motd
112      </code></p></div>
113    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
114<div class="section">
115<h2><a name="ftppass" id="ftppass">How can I hide the FTP cleartext password
116    in my browser's URL line?</a></h2>
117      <p>To log in to an FTP server by username and password, Apache uses
118      different strategies. In absense of a user name and password in the URL
119      altogether, Apache sends an anonymous login to the FTP server,
120      <em>i.e.</em>,</p>
121
122      <div class="example"><p><code>
123        user: anonymous<br />
124        password: apache_proxy@
125      </code></p></div>
126
127      <p>This works for all popular FTP servers which are configured for
128      anonymous access.</p>
129
130      <p>For a personal login with a specific username, you can embed the user
131      name into the URL, like in:</p>
132
133      <div class="example"><p><code>
134        ftp://<var>username</var>@<var>host</var>/myfile
135      </code></p></div>
136
137      <p>If the FTP server asks for a password when given this username (which
138      it should), then Apache will reply with a <code>401</code> (Authorization
139      required) response, which causes the Browser to pop up the
140      username/password dialog. Upon entering the password, the connection
141      attempt is retried, and if successful, the requested resource is
142      presented. The advantage of this procedure is that your browser does not
143      display the password in cleartext (which it would if you had used</p>
144
145      <div class="example"><p><code>
146        ftp://<var>username</var>:<var>password</var>@<var>host</var>/myfile
147      </code></p></div>
148
149      <p>in the first place).</p>
150
151      <div class="note"><h3>Note</h3>
152        <p>The password which is transmitted in such a way is not encrypted on
153        its way. It travels between your browser and the Apache proxy server in
154        a base64-encoded cleartext string, and between the Apache proxy and the
155        FTP server as plaintext. You should therefore think twice before
156        accessing your FTP server via HTTP (or before accessing your personal
157        files via FTP at all!) When using insecure channels, an eavesdropper
158        might intercept your password on its way.</p>
159      </div>
160    </div>
161</div>
162<div class="bottomlang">
163<p><span>Available Languages: </span><a href="/en/mod/mod_proxy_ftp.html" title="English">&nbsp;en&nbsp;</a> |
164<a href="/ja/mod/mod_proxy_ftp.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
165</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
166<script type="text/javascript"><!--//--><![CDATA[//><!--
167var comments_shortname = 'httpd';
168var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_proxy_ftp.html';
169(function(w, d) {
170    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
171        d.write('<div id="comments_thread"><\/div>');
172        var s = d.createElement('script');
173        s.type = 'text/javascript';
174        s.async = true;
175        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
176        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
177    }
178    else { 
179        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
180    }
181})(window, document);
182//--><!]]></script></div><div id="footer">
183<p class="apache">Copyright 2013 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>
184<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[//><!--
185if (typeof(prettyPrint) !== 'undefined') {
186    prettyPrint();
187}
188//--><!]]></script>
189</body></html>