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 -S
muestra 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 VirtualHostByUser
tambié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>