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 或 SSL 的 FTP。所以我自己编译了它。

这篇文章很长。我试图缩短它,做到准确,避免不必要的内容,但提供足够的信息。如果我可以改进什么,或者我的问题更属于 unix 和 linux stackexchange,请告诉我。我选择使用超级用户而不是 serverfault 来提问,因为它是关于家里的服务器环境的。

感谢您的时间和帮助。

答案1

有一些配置指令会影响整个守护进程,例如UseIPv6MaxInstances。这些指令不能因此,应根据每个虚拟主机进行设置。

但是,ProFTPD 的配置文件语法没有上下文/部分说明“这些指令仅适用于整个守护进程”。因此默认情况下(是的,这并不理想),这些守护进程范围的指令仅允许在“服务器配置”部分中使用,在<Global><VirtualHost>或任何其他上下文之外。

希望这可以帮助!

答案2

事实证明,我提供的一些信息并不正确。我将把这个问题标记为已回答,以避免人们花时间回答它。简单的编辑不会有帮助,因为我不知道什么时候有时间重新检查我的 proftpd 设置。不过,我会澄清导致我提供不正确描述的原因,修改我的问题并在一段时间后再次发布。

相关内容