Apache HTTP サーバ バージョン 2.2
説明: | 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 で個人的な ファイルにアクセスする時 ) 、倍の慎重さが求められます。 安全でないネットワークを使っている場合、経路上でパスワードを盗み取られる 可能性があります。