Proftpd - 正確使用虛擬主機、全域部分、伺服器上下文

Proftpd - 正確使用虛擬主機、全域部分、伺服器上下文

簡潔版本:

proftpd 設定檔中的伺服器上下文和虛擬主機部分有什麼不同?從我能對前者做什麼的意義上說,我不能對後者做什麼。
例如,我無法將像 UseIPv6 或 MaxInstances 這樣的指令放入虛擬主機或全域部分,但將其放入伺服器上下文中就可以了。那麼對於下面提到的設置,這些部分的正確用法是什麼?

我認為整體流程是這樣的:每當客戶端連接到伺服器時,伺服器會檢查是否有與客戶端連接的位址對應的虛擬主機。如果不是,則選擇伺服器上下文部分(除非使用 DefaultServer 指令來防止這種情況)。所以我認為伺服器上下文部分和虛擬主機部分同樣「強大」。但事實並非如此,因為有些指令僅適用於其中一個部分。

長版(附加資訊):

基本上我想做的就是在家裡的本地電腦上運行 proftp 伺服器,並使該伺服器可以從互聯網和我的 LAN 存取。它正在發揮作用。我從原始程式碼編譯了 proftpd(原因如下),安裝並配置了它,它似乎可以正常工作。我不需要幫助讓 proftpd 正常運作。

不過,僅通過閱讀 proftpd 文檔,我無法讓伺服器運行,我必須繼續修改配置文件,直到一切正常。因此,關於虛擬主機、全域和伺服器上下文部分的使用,我仍然沒有正確理解,這就是我提出上述問題的原因。

我讀到了有關在路由器後面配置 proftpd 以及虛擬主機、全域和伺服器上下文部分的含義:
http://www.proftpd.org/docs/howto/NAT.html
http://www.proftpd.org/docs/howto/Vhost.html
我遵循了多個指南並在論壇中搜尋了類似的問題。伺服器正在工作,我只是不太明白為什麼現在可以以及為什麼以前不能。

這是我目前(工作)proftpd.conf 的結構: <Global> User ... Group ... RequireValidShell ... DefaultRoot ... ... <IfModule mod_tls.c> TLSEngine ... TLSProtocol TLSv1.2 ... </IfModule> </Global>
#server context managing the config for access over the internet ServerName "external" Port 21 #can't be used inside a virtualhost section UseIPv6 off ... #need to masquerade ip for external address MasqueradeAddress myurl.com #needed for passive ftp mode PassivePorts 60000 65535
#virtualhost managing the config for lan access <VirtualHost 192.168.178.54> ServerName "internal" Port 21 PassivePorts 60000 65535 </VirtualHost>

我首先想到我應該建立兩個虛擬主機部分,一個用於 LAN,一個用於外部訪問,並透過設定連接埠 0 來停用伺服器上下文部分。所以我很不確定我是否按照我的預期使用了 3 個可能的部分。我是否需要使用伺服器上下文部分來進行某種預設配置?根據文檔,這可以使用 DefaultServer 指令來完成。

uname -a:Linux 主機名稱 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux

proftpd -v:ProFTPD 版本 1.3.5 debian 儲存庫中包含的 proftpd 二進位套件不支援 TLS 1.2,我不想使用 TLS 版本低於該版本的 FTP,甚至不想使用 SSL。所以我自己編譯了一下。

這是一篇相當長的文字。我試圖縮短它,保持精確,避免不必要的內容,但提供足夠的資訊。如果有什麼我可以改進的地方,或者如果我的問題屬於 unix 和 linux stackexchange,請告訴我。我選擇超級用戶而不是伺服器故障來問這個問題,因為它是關於家裡的伺服器環境。

感謝您的時間和幫助。

答案1

有一些設定指令會影響整個守護程式,例如UseIPv6MaxInstances。這些指令不能由於這個原因,需要在每個虛擬主機的基礎上進行設定。

然而,ProFTPD 的設定檔語法沒有上下文/部分來說明「這些指令僅適用於整個守護程式」。因此,預設情況下(是的,這並不理想),這些守護程序範圍的指令僅允許在「伺服器配置」部分中、在<Global><VirtualHost>或任何其他上下文之外。

希望這可以幫助!

答案2

事實證明,我提供的一些資訊是不正確的。我將把這個問題標記為已回答,以避免人們花時間回答它。簡單的編輯不會有幫助,因為我不知道什麼時候有時間重新檢查我的 proftpd 設定。不過,我會澄清導致我提供的錯誤描述的原因,修改我的問題並在一段時間後再次發布。

相關內容