Apache2 virtualhost resolving

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online
Op mijn Debian server heb ik in Apache2, twee virtualhosts (vhost) gedefinieerd. Zodra beide websites actief (a2ensite) zijn werken deze geheel naar behoren.

Het probleem treedt op wanneer ik door middel van 'a2dissite domein1.com' een vhost deactiveer.
Het inactieve domein resolved naar de document root van het nog steeds actieve domein (domein2.com).

Omgekeerd werkt het exact hetzelfde. Het lijkt erop dat Apache2 automatisch resolved naar een actieve vhost wanneer er voor het gevraagde domein geen actieve vhost wordt gevonden.

Uit het beetje informatie dat ik online heb kunnen vinden lijkt dit bewust gedrag van Apache2. Helaas ben ik er niet zo blij mee en heb liever dat het domein helemaal niet resolved. Heeft iemand enig idee hoe ik dit kan voorkomen? Bedankt.

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Klinkt alsof je geen andere vhosts meer hebt. Je domein1 wordt dan automatisch default als domein2 er niet is en vice versa. Je moet dus nog een default vhost regelen zodat alles wat niet 'domein1' matcht, daarheen gaat.

Zie hier: http://httpd.apache.org/docs/2.2/vhosts/examples.html

[ Voor 13% gewijzigd door CyBeR op 11-09-2011 19:28 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:44

Kees

Serveradmin / BOFH / DoC
Je kan de DNS entry slopen, dan resolved het subdomein niet meer naar je apache server.

Of je zou een derde 'default' vhost kunnen maken die naar /dev/null (of een lege dir) wijst.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online
Oke, dat klinkt logisch. Na aanleiding van jullie posts schoot mij te binnen dat ik inderdaad de default vhost had uitgeschakeld. Deze heb ik ondertussen weer aangezet, maar helaas resolved het ene domein nog steeds naar de eerste actieve vhost dat het tegenkomt.

Dit is de inhoud van de /etc/apache2/sites-enabled/000-default vhost. Er is geen ServerName gedefenieerd, dus volgens mij zou hij standaard naar deze vhost moeten resolveer zodra de vhost niet gevonden wodt. helaas rsolved hij nog steeds naar de document root van het andere domein.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

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

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                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 Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
<VirtualHost _default_:80>
DocumentRoot /www/default
</VirtualHost>
Met deze regel blijft het probleem bestaan. Op zich ook niet vreemd aangezien er het volgende staat.
Catching every request to any unspecified IP address and port, i.e., an address/port combination that is not used for any other virtual host.
Het punt is dat het IP en port wel gespecificeerd zijn, wel vaker zelfs (domein1 en domein2). Het gaat enkel om een niet bestaande/inactief ServerName. De ServerName is ook niet gespecificeerd in deze regel, dus dan zou Apache2 alsnog voorkeur moeten hebben voor deze ipv de vhost van het andere domein.

De default vhost configuratie file heet 000-default, dus zou als eerste gevonden moeten worden.

/etc/init.d/apache2 reload wordt iedere keer gedaan na een wijziging.

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Hoe zien je andere vhosts eruit?

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online
Ik tast weer eens in het duister, maar dat is niets nieuws met Apache2.

Domeinen gaan met een

@ 1.2.3.4 A
* 1.2.3.4 A

vanuit DNS

domein1

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<VirtualHost 1.2.3.4:80>

    ServerName domein1.com
    ServerAlias *.domein1.com *.domein1.net *.domein1.eu *.domein1.nl
    ServerAdmin admin@domein1.com
    DocumentRoot /srv/www/domein1.com/public_html/
    ErrorLog /srv/www/domein1.com/logs/error.log
    CustomLog /srv/www/domein1.com/logs/access.log combined

    <Directory /srv/www/domein1.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost 1.2.3.4:443>

    ServerName domein1.com
    ServerAlias *.domein1.com
    ServerAdmin admin@domein1.com
    DocumentRoot /srv/www/domein1.com/public_html/
    ErrorLog /srv/www/domein1.com/logs/error.log
    CustomLog /srv/www/domein1.com/logs/access.log combined

    <Directory /srv/www/domein1.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Location /cgi-bin>
        Options +ExecCGI
    </Location>

    SSLEngine on
    SSLCertificateFile /etc/apache2/apache.pem

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>


domein2

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<VirtualHost 1.2.3.4:80>

    ServerName domein2.com
    ServerAlias *.domein2.com
    ServerAdmin admin@domein2.com

    DocumentRoot /srv/www/domein2.com/public_html

    ErrorLog /srv/www/domein2.com/logs/error.log
    CustomLog /srv/www/domein2.com/logs/access.log combined

    <Directory /srv/www/domein2.com/public_html>
        Options -Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>


<IfModule mod_ssl.c>
<VirtualHost 1.2.3.4:443>

    ServerName domein2.com.
    ServerAlias www.domein2.com
    ServerAdmin admin@domein2.com
    DocumentRoot /srv/www/domein2.com/public_html/
    ErrorLog /srv/www/domein2.com/logs/error.log
    CustomLog /srv/www/domein2.com/logs/access.log combined

    <Directory /srv/www/domein2.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Location /cgi-bin>
        Options +ExecCGI
    </Location>

   SSLEngine on
   SSLCertificateFile    /etc/ssl/localcerts/apache.pem
   SSLCertificateKeyFile /etc/ssl/localcerts/apache.key

   <FilesMatch "\.(cgi|shtml|phtml|php)$">
       SSLOptions +StdEnvVars
   </FilesMatch>

   <Directory /usr/lib/cgi-bin>
       SSLOptions +StdEnvVars
   </Directory>

   BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
   BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

[ Voor 13% gewijzigd door Oyster op 11-09-2011 21:19 ]


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 10:44

Kees

Serveradmin / BOFH / DoC
Makkelijk.

Apache matched op:
A. ServerName
B. ServerAlias
C. VirtualHost
D. Default domein

Aangezien 1.2.3.4:80 beter matched dan *:80, zal apache die 1.2.3.4:80 matchen, en dus niet je default domein pakken.

Kortom, maak van je vhosts *:80, of zet je default vhost op ip:80

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online
Done, helaas gaan beide domeinen nu naar de default document root. Jullie hulp geeft me weer even wat houvast, dus ik ga weer even verder testen.

Update 1:

Het werkt. In mijn ports.conf stond een "NameVirtualHost 1.2.3.4:80" regel.
Deze heb ik vervangen door een "NameVirtualHost *:80" regel.

Alle vhosts staan gedefenieerd als <VirtualHost *:80>

Ik heb geen idee wat het verschil maakt. De server beschikt sowieso maar over één IP ('1.2.3.4').

Update 2:

En nu worden mn subdomeinen niet meer gerespecteerd en gaan naar de default document root toe. Pff.

[ Voor 66% gewijzigd door Oyster op 11-09-2011 22:02 ]

Pagina: 1