Apache HTTP Server 版本2.2
說明 | mod_proxy 的FTP支持模塊 |
---|---|
狀態(tài) | 擴(kuò)展(E) |
模塊名 | proxy_ftp_module |
源文件 | proxy_ftp.c |
本模塊提供了代理FTP站點的能力,它需要mod_proxy
提供的服務(wù)。這樣,為了能處理FTP代理請求,模塊mod_proxy
和mod_proxy_ftp
必須同時存在于服務(wù)器中。
注意:目前對FTP的支持僅限于GET方法。
在您沒有對您的服務(wù)器采取安全措施之前,不要啟用代理。開放的代理服務(wù)器對你自己的內(nèi)部網(wǎng)絡(luò)和大規(guī)模的Internet網(wǎng)都是有安全隱患的。
您可能沒有在您的代理mime類型配置文件中定義特定的文件類型application/octet-stream
。有用的一行可能是這樣的:
application/octet-stream bin dms lha lzh exe class tgz taz
作為另一種選擇,你可能希望將所有東西都看成二進(jìn)制類型:
DefaultType application/octet-stream
在很罕見的情況下,也許您想要用FTP的ASCII
傳輸模式(默認(rèn)是binary
模式)來下載某個特定的文件,您可以用在請求前面加上";type=a
"前綴的方式覆蓋mod_proxy
的默認(rèn)值來強(qiáng)制進(jìn)行ASCII模式的傳輸。但是不論如何,F(xiàn)TP目錄列表將始終以ASCII模式執(zhí)行。
目前,mod_proxy僅支持FTP的GET方法,因此不支持使用FTP上傳。你可以通過Apache代理改用HTTP上傳(POST或PUT)。
一個FTP URI一般被當(dāng)成登錄用戶home目錄的相對路徑處理。唉,可惜您不能使用"/../"來到達(dá)更上層的目錄,因為點(.)由瀏覽器解釋而不會真正發(fā)送給FTP服務(wù)器。為搞定這個問題,在Apache FTP代理中實現(xiàn)了一個"Squid %2f hack"。這是一個也被其它流行的類似Squid Proxy Cache的代理服務(wù)器使用的解決方法。使用預(yù)先將"/%2f
"加入您請求路徑的方法,您能使代理將FTP起始目錄改為"/
"(而不是home目錄)。例如,為了取得文件/etc/motd
,您應(yīng)當(dāng)使用下面這樣的URL :
ftp://user@host/%2f/etc/motd
使用用戶名和密碼登入一個FTP服務(wù)器時,Apache使用了不同的策略。當(dāng)URL中不存在用戶名和密碼時,Apache會向FTP服務(wù)器發(fā)出一個匿名用戶的登錄,比如說:
user: anonymous
password: apache_proxy@
這對于配置了匿名訪問的大多數(shù)FTP服務(wù)器來說是很有效的。
要使用特定的用戶名,可以將這個特定的用戶名嵌入URL中:
ftp://username@host/myfile
如果在給出了這個用戶名后,F(xiàn)TP服務(wù)器要求提供一個密碼(這是它應(yīng)該做的),這時Apache會回應(yīng)一個"401
"(需要認(rèn)證)應(yīng)答,這將會使瀏覽器彈出一個用戶名/密碼對話框。當(dāng)輸入了密碼后,將會再次嘗試連接,如果成功,則請求的資源就會被下載。這種方法的好處在于您的瀏覽器不會以明碼的形式顯示密碼,而當(dāng)您使用
ftp://username:password@host/myfile
的時候就無法做到這一點。
這種方法提交的密碼在傳輸?shù)臅r候沒有進(jìn)行加密。它在您的瀏覽器到Apache代理服務(wù)器之間傳輸時為base64格式的明文字符串,而在Apache代理服務(wù)器和FTP服務(wù)器之間傳輸?shù)臑槠胀ㄎ谋尽K,在通過HTTP訪問您的FTP服務(wù)器之前(或通過FTP訪問您的私人文件之前)您應(yīng)該慎重考慮一下。當(dāng)使用這種不安全的手段時,一個竊聽者可能會用這種方法截取您的密碼。