Apache, mod_ftp no maneja múltiples vhosts con nombre

Apache, mod_ftp no maneja múltiples vhosts con nombre

Tengo un servidor web Apache 2.2 que ejecuta varios hosts virtuales HTTP y HTTPS, y funcionan bien. Ahora necesito agregar un vhost FTP (¡antes había uno!) y, aunque httpd -Smuestra todos los vhosts, solo el predeterminado puede autorizar las solicitudes. Elmanual mod_ftpdice que hay una opción FTP para mod_ftp para redirigir al vhost adecuado si el comando USUARIO proporciona un nombre, aún así llegan registros al primer registro de errores del vhost que indica "no se encontró ningún usuario".[correo electrónico protegido]". Las respectivas líneas de configuración están aquí:

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>

Utilizo totalcmd para realizar pruebas y dice claramente que se anuncia "firsthost.com FTP" y no se puede hacer nada para cambiar a secondhost.com. Según tengo entendido, si bien un host realmente debería responder a la conexión, ya que FTP no permite seleccionar el host por nombre antes de la autenticación, Apache debería cambiar la definición de vhost utilizada al recibir por FTP y revisar sus vhosts para obtener el archivo de contraseña correcto y directorio de inicio correcto. No es así. ¿Alguna solución utilizable, excepto ejecutar sitios FTP en diferentes puertos (donde Apache diferiría claramente entre esos hosts según la solicitud de conexión)?USER [email protected]

PD: El sistema operativo es Windows Server 2008R2, por lo que construir Apache o mod_ftp a partir de fuentes está fuera de nuestro alcance. Esto puede ser un error en un conjunto ejecutable particular de Apache+mod_ftp. Apache responde con:

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

mod_ftp responde con: mod_ftp 0.9.6

Respuesta1

Nunca supe que Apache funcionaría como servidor FTP, cada día aprendes algo nuevo :)

En general: cuando se utilizan entradas de VirtualHost en Apache, muchas opciones del servidor principal se suprimen y, en su lugar, es necesario configurarlas en el <VirtualHost> ... </VirtualHost>bloque.

Ipensarese puede ser el caso deFTPOptions VirtualHostByUsertambién.

Intentar:

<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>

información relacionada