Apache HTTP サーバ バージョン 2.2

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2 > モジュール

# Apache モジュール mod_proxy_ftp

翻訳済み言語: en | ja

説明: | `mod_proxy` のための FTP サポートモジュール
ステータス: | Extension
モジュール識別子: | proxy_ftp_module
ソースファイル: | mod_proxy_ftp.c

### 概要

本モジュールには `mod_proxy` が必要です。 本モジュールは FTP サイトへのプロキシ機能を提供します。 現状、 FTP サポートは GET メソッドに限定されていることに注意してください。

FTP プロキシリクエストを扱うためには、`mod_proxy` と `mod_proxy_ftp`が サーバに組み込まれて いなければいけません。

### 警告

安全なサーバにするまでプロキシ機能は有効にしないでください。 オープンプロキシサーバはあなた自身のネットワークにとっても、 インターネット全体にとっても危険です。

### ディレクティブ

このモジュールにディレクティブはありません。

### トピック

- なぜファイルタイプ xxx は FTP ダウンロードできないのでしょう?
- ファイル xxx を ASCII モードで FTP ダウンロードさせるにはどうすればいいのでしょう?
- FTP アップロードはできますか?
- ホームディレクトリ外のファイルに FTP アクセスするにはどうすればよいでしょうか?
- ブラウザの URL 欄に FTP のパスワードがそのまま 載らないようにするにはどうすればよいでしょうか?

### 参照

- `mod_proxy`

## なぜファイルタイプ xxx は FTP ダウンロードできないのでしょう?

おそらく、プロキシの mime.types 設定ファイルでそのファイルタイプを `application/octet-stream` として定義していないのでしょう。 以下の行が便利でしょう。

    application/octet-stream   bin dms lha lzh exe class tgz taz

デフォルトで全てをバイナリにするのもいいかもしれません:

    DefaultType application/octet-stream

## ファイル xxx を ASCII モードで FTP ダウンロードさせるにはどうすればいいのでしょう?

稀に、特定のファイルを FTP の `ASCII` 転送モードでダウンロードしなければ ならない場合があります (なお、デフォルトの転送モードは `binary` です)。 この場合、リクエストの末尾に `;type=a` を加えることで `mod_proxy` のデフォルト動作を変更して、 ASCII 転送モードにできます。 (一方、 FTP のディレクトリ一覧は常に ASCII モードです。)

## FTP アップロードはできますか?

現状、 mod_proxy は FTP の GET のみサポートしています。 もちろん、 Apache プロキシで HTTP アップロード (POST または PUT) はできます。

## ホームディレクトリ外のファイルに FTP アクセスするにはどうすればよいでしょうか?

FTP の URI はログイン中のユーザのホームディレクトリの相対パスとして 解釈されます。より上位のディレクトリに行くために /../ を使っても無駄です。 と言うのも、ドットふたつはブラウザが解釈するだけで、実際に FTP サーバには 送られないからです。この問題に対して、 Apache の FTP プロキシは いわゆる Squid %2f hack を実装しています; Squid Proxy Cache などの 他の有名なプロキシサーバも採用している解決方法です。 リクエストのパスの先頭に `/%2f` をつけると、これらのプロキシ は FTP のディレクトリを `/` 開始にします (ホームディレクトリではなく)。 例えば、`/etc/motd` ファイルを取得するには、次の URL を 使えばよいでしょう:

`ftp://user@host/%2f/etc/motd`

## ブラウザの URL 欄に FTP のパスワードがそのまま 載らないようにするにはどうすればよいでしょうか?

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

翻訳済み言語: en | ja