Apache HTTP サーバ バージョン 2.2
This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.
You may follow this link to go to the current version of this document.
説明: | mod_proxy のための FTP サポートモジュール |
---|---|
ステータス: | Extension |
モジュール識別子: | proxy_ftp_module |
ソースファイル: | mod_proxy_ftp.c |
本モジュールには mod_proxy
が必要です。
本モジュールは FTP サイトへのプロキシ機能を提供します。
現状、 FTP サポートは GET メソッドに限定されていることに注意してください。
FTP プロキシリクエストを扱うためには、mod_proxy
と mod_proxy_ftp
が サーバに組み込まれて
いなければいけません。
安全なサーバにするまでプロキシ機能は有効にしないでください。 オープンプロキシサーバはあなた自身のネットワークにとっても、 インターネット全体にとっても危険です。
このモジュールにディレクティブはありません。
おそらく、プロキシの mime.types 設定ファイルでそのファイルタイプを
application/octet-stream
として定義していないのでしょう。
以下の行が便利でしょう。
application/octet-stream bin dms lha lzh exe class tgz taz
デフォルトで全てをバイナリにするのもいいかもしれません:
DefaultType application/octet-stream
稀に、特定のファイルを FTP の ASCII
転送モードでダウンロードしなければ
ならない場合があります (なお、デフォルトの転送モードは binary
です)。
この場合、リクエストの末尾に ;type=a
を加えることで
mod_proxy
のデフォルト動作を変更して、 ASCII 転送モードにできます。
(一方、 FTP のディレクトリ一覧は常に ASCII モードです。)
現状、 mod_proxy は FTP の GET のみサポートしています。 もちろん、 Apache プロキシで HTTP アップロード (POST または PUT) はできます。
FTP の URI はログイン中のユーザのホームディレクトリの相対パスとして
解釈されます。より上位のディレクトリに行くために /../ を使っても無駄です。
と言うのも、ドットふたつはブラウザが解釈するだけで、実際に FTP サーバには
送られないからです。この問題に対して、 Apache の FTP プロキシは
いわゆる Squid %2f hack を実装しています;
Squid Proxy Cache などの
他の有名なプロキシサーバも採用している解決方法です。
リクエストのパスの先頭に /%2f
をつけると、これらのプロキシ
は FTP のディレクトリを /
開始にします (ホームディレクトリではなく)。
例えば、/etc/motd
ファイルを取得するには、次の URL を
使えばよいでしょう:
ftp://user@host/%2f/etc/motd
FTP サーバにユーザ名とパスワードを使ってログインするために、 Apache は異なる戦略を使います。 URL にユーザ名もパスワードも無ければ、 Apache は FTP サーバに匿名 (anonymous) ログインしようとします。 例
user: anonymous
password: apache_proxy@
匿名アクセスを設定したすべての有名な FTP サーバでこれは動作します。
特定のユーザ名でログインするために、 URL に次のようにユーザ名を埋め込めます:
ftp://username@host/myfile
FTP サーバがこのユーザ名に対してパスワードを求めると (そうあるべきです) 、
Apache は 401
(Authorization required) レスポンスを返します。
これによりブラウザはユーザ名とパスワードを求めるダイアログ画面をポップアップします。
パスワードを入力すると、もう一度接続しなおし、認証が成功すると、
要求していたリソースが現れます。このやりとりの利点は、ブラウザがパスワードを
そのまま表示しないことです。もし最初に次の URL を使っていると
ftp://username:password@host/myfile
パスワードがそのまま見えてしまいます。
このように送信するパスワードはネットワーク上は暗号化されません。 ブラウザと Apache プロキシサーバの間は base64 エンコードした生パスワードで、 Apache プロキシサーバと FTP サーバの間はプレインテキストです。 このため、 HTTP 経由で FTP サーバにアクセスする時 (とにかく FTP で個人的な ファイルにアクセスする時 ) 、倍の慎重さが求められます。 安全でないネットワークを使っている場合、経路上でパスワードを盗み取られる 可能性があります。