[Apache] virtualhost speelt "catchall"

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een ubuntu 12.04 server opgezet, en ik heb het standaardschema met sites-available en sites-enabled enzo aangehouden. Ik heb de default virtualhost gebruikt als template voor een nieuwe. Probleem dat zich nu laat zien, is dat een van de virtualhosts als catchall speelt. Die ene virtualhost wordt gepakt voor alle domeinen die in DNS wel naar m'n server verwijzen, maar waarvoor ik nog geen vhost heb aangemaakt.

Hoe stop ik dat? Ik wil dan gewoon een melding a la "no website configured on this address" zien. Of desnoods een 404. Of in elk geval *iets* van een error die zegt dat er geen vhost voor de gebruikte url is.

De vhost die catchall aan het spelen is, ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName gallery.example.com

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

        ErrorLog ${APACHE_LOG_DIR}/error.gallery.log

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

</VirtualHost>

En bij example.com moet je maar even iets anders denken als dat je stoort :)
Het punt is dat yadayada.example.com nu ook naar deze vhost gaat, ook al is die naam helemaal niet gedefinieerd als ServerName of ServerAlias.

Ik heb uiteraard ook al dit geprobeerd:
code:
1
<VirtualHost gallery.example.com:80>...

Gevolgd door een reload, maar dat helpt helemaal niets. Is ook maar goed ook, want deze vhost moet nog naar meer namen kunnen luisteren, die ik erin ga zetten met ServerAlias, maar dan ook echt alléén die, niet ook maar gelijk al het andere.

Ik snap ook niet waarom deze. Ik heb nog een andere vhost die precies hetzelfde is op de ServerName en www directory na, en die pakt ie niet.

Iemand een idee hoe ik dit oplos?

日本!🎌


  • VorCha
  • Registratie: November 2004
  • Laatst online: 11-06 21:15
Je zou die 'catch-all' kunnen aanpassen dat er een 'catch-all' pagina getoont wordt. Standaard zoekt apache naar een index.html of .php maar dit kun je aanpassen.

De andere mogelijkheid is voor de resterende dns records een aparte vhost aanmaken die ook weer naar een directory leid met een 'catch-all' pagina.

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 20:35
Bij het bepalen welke hostnaam bij welke virtualhost hoort werkt apache op volgorde van de eerste naar de laatste vhost. Ik vermoed dat dat in het geval van een hele directory includen (/etc/apache2/sites-enabled) alfabetisch gaat op basis van filename, waarbij 000-default als eerste komt.

Als Apache geen match kan vinden, zou 'ie altijd de eerste moeten pakken. Heb je die 000-default er nog wel staan?

  • magistus
  • Registratie: December 2001
  • Laatst online: 28-09 11:57
Wat ^^^ zegt. Kijk ook eens naar de output van apachectl -S (of httpd -S bij Redhat en consorten).

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
apachectl -S geeft idd aan dat de site in kwestie als default wordt gezien. Ik heb die 000-default aangemaakt (ik weet niet meer of die ooit bestond...) als een kopie van de probleemsite, de directories aangepast (en aangemaakt en de juiste/zefde rechten gegeven) en de ServerName op iets onzinnigs gezet (want die mag nooit matchen).

En vervolgens "sudo a2ensite 000-default":
code:
1
ERROR: Site default does not exist!

Say what? Nee, default bestaat inderdaad niet, maar waarom zeurt ie daarover :?

/edit
Hm, als ik em gewoon "default" noem ipv "000-default" dan slikt ie het wel. Gek genoeg staat er in de uitput van apachectl -S dan toch stieken 000-default... Dus waar ie dat dan weer vandaan haalt? Ik vraag me nu wel erg af of het zo opgelost is. De a komt immers voor de d, en een site die met een a begint is niet ondenkbaar (analytics.example.com bijv).

/edit2
Tot nu toe werkt het in elk geval wel, dus bedankt daarvoor :)

Is er nog een manier om (eventueel) apache te forceren om de site genaamd "default" als default/catchall te gebruiken, mocht dat nodig zijn?

[ Voor 37% gewijzigd door _Thanatos_ op 20-09-2012 23:27 ]

日本!🎌


  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

ServerName * gebruiken

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Wat CAPTLOCK2K zegt... RTFM en gebruik een ServerName en als je meer nodig hebt een paas keer ServerAlias?
Pagina: 1