Apache, mod_ftp verarbeitet keine mehreren benannten virtuellen Hosts

Apache, mod_ftp verarbeitet keine mehreren benannten virtuellen Hosts

Ich habe einen Apache 2.2-Webserver, auf dem mehrere virtuelle HTTP- und HTTPS-Hosts laufen. Diese funktionieren einwandfrei. Jetzt muss ich einen virtuellen FTP-Host hinzufügen (da war schon einer!), und obwohl httpd -Salle virtuellen Hosts angezeigt werden, kann nur der Standard-Host Anfragen autorisieren. Dermod_ftp Handbuchsagt, dass es eine FTP-Option für mod_ftp gibt, um zum richtigen virtuellen Host umzuleiten, wenn der USER-Befehl einen Namen angibt, aber trotzdem kommen die Protokolle im Fehlerprotokoll des ersten virtuellen Hosts an und geben an: „Kein Benutzer gefunden[email geschützt]". Die entsprechenden Konfigurationszeilen finden Sie hier:

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>

Ich verwende totalcmd zum Testen und es wird eindeutig angezeigt, dass „firsthost.com FTP“ angekündigt wird und nichts dazu veranlasst werden kann, auf secondhost.com umzuschalten. So wie ich das Problem verstehe, sollte ein Host zwar wirklich auf die Verbindung reagieren, da FTP keine Auswahl des Hosts nach Namen vor der Authentifizierung zulässt, Apache sollte dann jedoch die beim Empfang per FTP verwendete vHost-Definition ändern und seine vHosts überprüfen, um die richtige Kennwortdatei und das richtige Home-Verzeichnis zu ermitteln. Das tut es nicht. Gibt es brauchbare Lösungen, außer FTP-Sites auf unterschiedlichen Ports auszuführen (wobei Apache diese Hosts anhand der Verbindungsanforderung eindeutig unterscheiden würde)?USER [email protected]

PS: Das Betriebssystem ist Windows Server 2008R2, daher ist es nicht möglich, Apache oder mod_ftp aus Quellen zu erstellen. Dies kann ein Fehler in einem bestimmten ausführbaren Satz von Apache+mod_ftp sein. Apache antwortet mit:

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

mod_ftp antwortet mit: mod_ftp 0.9.6

Antwort1

Ich hätte nie gedacht, dass Apache als FTP-Server funktioniert. Man lernt nie aus :)

Generell gilt: Bei der Verwendung von VirtualHost-Einträgen in Apache werden viele Optionen vom Hauptserver unterdrückt und müssen stattdessen im <VirtualHost> ... </VirtualHost>Block gesetzt werden.

ICHdenkendas kann der Fall sein fürFTPOptions VirtualHostByUsersowie.

Versuchen:

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

verwandte Informationen