Apache, mod_ftp não manipula vários vhosts nomeados

1

Eu tenho um servidor web Apache 2.2 rodando vários hosts virtuais HTTP e HTTPS, estes funcionam bem. Agora preciso adicionar um vhost FTP (havia um antes!) E, enquanto httpd -S exibe todos os vhosts, apenas o padrão obtém autorizar solicitações. O mod_ftp manual diz que há uma opção de FTP para mod_ftp redirecionar para vhost correto se o comando USER fornecer um nome, ainda logs chegam ao primeiro log de erro vhost afirmando "nenhum usuário encontrado [email protected]". Respectivas linhas de configuração estão aqui:

LoadModule ftp_module modules/mod_ftp.so
Listen 21 ftp
FTPOptions StripHostName VirtualHostByUser 
# this should allow selecting vhosts by hostname part in user@hostname
NameVirtualHost *:21

#first vhost
<VirtualHost *:21>
    FTP On
    ServerAdmin [email protected]
    DocumentRoot "d:/webroot/firsthost"
    ServerName www.firsthost.com
    ServerAlias firsthost.com
    ErrorLog "d:/webroot/logs/firsthost-ftp-error.log"
    CustomLog "d:/webroot/logs/firsthost-ftp-access.log" common
    SSLEngine off

    <Directory />
        AllowOverride None
        Options Indexes -FollowSymLinks
        Order deny,allow
        Allow from all
        ForceType text/plain
        AuthType basic
        AuthBasicProvider file
        AuthUserFile "C:/server/apache/conf/extra/vhosts/firsthost-htpasswd.users"
        AuthName "firsthost.com FTP"
        Require valid-user
    </Directory>
</VirtualHost>

#second vhost - never gets to be addressed
<VirtualHost *:21> 
    FTP On
    ServerAdmin [email protected]
    DocumentRoot "d:/webroot/secondhost.com"
    ServerName www.secondhost.com
    ServerAlias secondhost.com
    SSLEngine off
    <Directory />
        AllowOverride None
        Options Indexes -FollowSymLinks
        Order deny,allow
        Allow from all
        ForceType text/plain
        AuthType basic
        AuthBasicProvider file
        AuthUserFile "C:/server/apache/conf/extra/vhosts/secondhost-htpasswd.users"
        AuthName "secondhost.com FTP"
        # doesn't work anyway, we don't have hostname at AuthName state
        Require valid-user
    </Directory>
    ErrorLog "d:/webroot/logs/secondhost-error.log"
    CustomLog "d:/webroot/logs/secondhost-access.log" common
</VirtualHost>

Eu uso o totalcmd para testar, e ele afirma claramente que "firsthost.com FTP" é anunciado, e nada pode ser feito para mudar para secondhost.com. Pelo que entendi o problema, enquanto um host realmente deveria responder à conexão, como o FTP não permite selecionar o host pelo nome antes da autenticação, o Apache deve alterar a definição do vhost usada ao receber USER [email protected] pelo FTP e revisar seus vhosts para obter o correto arquivo de senha e diretório home correto. Não faz. Quaisquer soluções utilizáveis, exceto para a execução de sites FTP em portas diferentes (onde o Apache diferiria claramente entre esses hosts por solicitação de conexão)?

PS: O SO é o Windows Server 2008R2, portanto, construir o Apache ou mod_ftp a partir de fontes está fora de alcance. Isso pode ser um bug no conjunto particular de executáveis do Apache + mod_ftp. O Apache responde com:

Server version: Apache/2.2.24 (Win32)
Server built:   Mar  1 2013 22:27:56

mod_ftp responde com: mod_ftp 0.9.6

    
por Vesper 06.09.2018 / 11:06

1 resposta

0

Eu nunca soube que o Apache funcionaria como um servidor FTP, você aprende algo novo todos os dias :)

Em geral: ao usar as entradas do VirtualHost no Apache, muitas opções do servidor principal são suprimidas e precisam ser definidas no bloco <VirtualHost> ... </VirtualHost> .

Eu acho que pode ser o caso de FTPOptions VirtualHostByUser também.

Tente:

<VirtualHost *:21>
    FTP On
    ServerName www.firsthost.com
    ServerAlias firsthost.com
    FTPOptions StripHostName VirtualHostByUser 
    ...
</VirtualHost>

<VirtualHost *:21> 
    FTP On
    ServerName www.secondhost.com
    ServerAlias secondhost.com
    FTPOptions StripHostName VirtualHostByUser 
    ...
</VirtualHost>
    
por 06.09.2018 / 12:00