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