Apache - subdirectory verweist auf anderen vhost

Apache, Lighttpd, nginx, Cherokee
niemandwichtiges
Posts: 25
Joined: 2006-11-17 17:14

Apache - subdirectory verweist auf anderen vhost

Post by niemandwichtiges » 2011-08-12 18:52

Hi,

ich bin gerade etwas ratlos beim Einrichten eines Apache2 servers.

Ich habe mir zwei vhost eingerichtet, deren index.php auch jeweils korrekt dargestellt wird, wenn die Domain aufgerufen wird.

Wenn ich nun per HTTPS ein Subdirectory des einen vhosts aufrufe, bekomme ich einen "Not found" Fehler. Ein Blick in das error log zeigt mir, dass der Apache versucht hat, die Datei im falschen vhost zu suchen :-?

Das Problem tritt nur unter https (Port 443) auf - unter Port 80 läuft alles wie erwünscht.

Meine Konfiguration sieht vereinfacht so aus:

sites-enabled/000-default:

Code: Select all

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


sites-enabled/domain1.conf:

Code: Select all

<VirtualHost 111.111.111.111:80>
        DocumentRoot /var/www/vhosts/domain1/httpdocs
        ServerAdmin webmaster@localhost
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/www/vhosts/domain1/logs/access.log "combined"
        Alias /doc/ "/usr/share/doc/"
        <Directory /var/www/vhosts/domain1/httpdocs>
                allow from all
        </Directory>

        ServerName domain1.de
        UseCanonicalName Off

        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>

</VirtualHost>
<VirtualHost 111.111.111.111:443>
        DocumentRoot /var/www/vhosts/domain1/httpdocs
        ServerAdmin webmaster@localhost
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/www/vhosts/domain1/logs/access.log "combined"
        Alias /doc/ "/usr/share/doc/"
        <Directory /var/www/vhosts/domain1/httpdocs>
                allow from all
        </Directory>

        ServerName domain1.de
        UseCanonicalName Off

        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>

</VirtualHost>



sites-enabled/domain2.conf:

Code: Select all

<VirtualHost 111.111.111.111:80>
        DocumentRoot /var/www/vhosts/domain2/httpdocs
        ServerAdmin webmaster@localhost
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/www/vhosts/domain2/logs/access.log "combined"
        Alias /doc/ "/usr/share/doc/"
        <Directory /var/www/vhosts/domain2/httpdocs>
                allow from all
        </Directory>

        ServerName domain2.de
        UseCanonicalName Off

        SSLEngine on
        SSLVerifyClient none
        SSLCertificateKeyFile /etc/apache2/certificates/server.cert.key
        SSLCertificateFile /etc/apache2/certificates/server.cert.crt


</VirtualHost>
<VirtualHost 111.111.111.111:443>
        DocumentRoot /var/www/vhosts/domain2/httpdocs
        ServerAdmin webmaster@localhost
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/www/vhosts/domain2/logs/access.log "combined"
        Alias /doc/ "/usr/share/doc/"
        <Directory /var/www/vhosts/domain2/httpdocs>
                allow from all
        </Directory>

        ServerName domain2.de
        UseCanonicalName Off


        SSLEngine on
        SSLVerifyClient none
        SSLCertificateKeyFile /etc/apache2/certificates/server.cert.key
        SSLCertificateFile /etc/apache2/certificates/server.cert.crt


</VirtualHost>


Rufe ich nun also unter https domain2.de/test/test.txt auf (sollte unter /var/www/vhosts/domain2/httpdocs liegen), so wird versucht die Datei unter /var/www/vhosts/domain1/httpdocs zu finden.

What's wrong ?

papabaer
Userprojekt
Userprojekt
Posts: 170
Joined: 2009-05-14 17:40
Location: Halle (Saale)

Re: Apache - subdirectory verweist auf anderen vhost

Post by papabaer » 2011-08-12 19:26

Du kannst unter https keine name based virtual hosts nutzen. Henne-Ei-Problem: Der Parameter zum Auflösen des vhosts ist verschlüsselt, vor einer Zuordnung auf einen vhost kann aber nicht entschlüsselt werden. Der Apache sollte dir das aber beim Start angesagt haben.

Es gibt einen Workarround mit speziellen Zertifikaten. Die sind aber teuer und funktionieren auf Windows < Vista nicht.
Last edited by papabaer on 2011-08-12 19:27, edited 1 time in total.

niemandwichtiges
Posts: 25
Joined: 2006-11-17 17:14

Re: Apache - subdirectory verweist auf anderen vhost

Post by niemandwichtiges » 2011-08-13 16:06

Oups, stimmt...Irgendwas war doch da. Vielen Dank für Deine Antwort :-)