Apache2 mit zwei IPs und 5 Domänen

edvsb

Registered User
Also ich bin einfach zu doof dazu. Selbst wenn ich eine andere Config die funktioniert abschreibe liefert mir mein Apache hier immer Fehler oder Warnungen.

Mein Ausgangspunkt ist:
2 IP-Adressen
5 Domänen

IP 1.1.1.1
Domain: a.tld
Domain: c.tld

IP 2.2.2.2
Domain: e.tld
Domain: g.tld
Domain: i.tld


In der /etc/apache2/posts.conf steht
Code:
Listen 80
NameVirtualHost *:80
NameVirtualHost hatte ich auch schon auskommentiert oder / und mit der entsprechenden IP versehen.

Im Verzeichnis /etc/apache2/sites-enabled liegen 6 Dateien. Die Default und meine 5 domain.tld.conf

Die Default ist unverändert (Original von Debian)

Aufgebaut sind meine wie folgt für die (a.tld und c.tld)
Code:
<VirtualHost 1.1.1.1:80>

	#SuexecUserGroup "#1001" "#1002"
	
	ServerAdmin postmaster@a.tld
	
	ServerName a.tld
	ServerAlias www.a.tld
	
	DocumentRoot /var/www/a.tld/public_html
	
	ErrorLog /var/www/a.tld/logs/error_log
	CustomLog /var/www/a.tld/logs/access_log combined
	
	DirectoryIndex index.php index.html
	
	<Directory /var/www/a.tld/public_html>
		#Options Indexes IncludesNOEXEC FollowSymLinks
		Order Deny,Allow
		Allow from all
		Options -Indexes
	</Directory>
	
	<Directory /var/www/a.tld/cgi-bin>
		allow from all
	</Directory>
	
</VirtualHost>

Die drei vhosts auf der zweiten IP sind gleich, nur eben mit der anderen IP bei <VirtualHost ...>


Dann bekomme ich immer eine der folgenden Warnungen, jenachdem wie oder ob ich überhaupt einen NameVirtualHost angebe.
VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
oder
VirtualHost 2.2.2.2:80 overlaps with VirtualHost 2.2.2.2:80, the first has precedence, perhaps you need a NameVirtualHost directive
oder
NameVirtualHost 1.1.1.1:80 has no VirtualHosts

Einzige Ausnahme ist, wenn ich bei a.tld und bei e.tld den NameVirtualHost auf die jeweilige IP setze, aber nur dort und gleichzeitig bei ports.conf entferne.

Aber das kann ja auch nicht der Weg sein, oder? Da die Conf-Files ja alphabetisch eingelesen werden kann da ja durchaus mal eine "zwischen reinrutschen" und dann wären die Fehler wieder da. Sprich, kommt eine d.tld für IP 2.2.2.2, dann geht es wieder nicht. Hab es schon versucht. Dann müsste der NameVirtualHost bei der "e" weg und bei der "d" rein... Also das kann ja wohl nicht stimmen...

Bitte jagt mich jetzt aber nicht gleich wieder zu anderen Seiten, denn ich lese schon den ganzen Tag im Netz quer durch. Die Beispiele auf der Apache-Seite habe ich auch gesehen, keine Sorge, doch da ist keines mit 2 IPs auf denen pro IP mehrere vHosts sind. Sind dort immer andere Konstellationen.

Vielen Dank
 
Last edited by a moderator:
Mein Ausgangspunkt ist:
2 IP-Adressen
5 Domänen

IP 1.1.1.1
Domain: a.tld
Domain: c.tld

IP 2.2.2.2
Domain: e.tld
Domain: g.tld
Domain: i.tld
Code:
NameVirtualHost 1.1.1.1:80
NameVirtualHost 2.2.2.2:80

<VirtualHost 1.1.1.1:80>
  ServerName a.tld
</VirtualHost>
<VirtualHost 1.1.1.1:80>
  ServerName c.tld
</VirtualHost>
<VirtualHost 2.2.2.2:80>
  ServerName e.tld
</VirtualHost>
<VirtualHost 2.2.2.2:80>
  ServerName g.tld
</VirtualHost>
<VirtualHost 2.2.2.2:80>
  ServerName i.tld
</VirtualHost>
Et voilá.

Dann bekomme ich immer eine der folgenden Warnungen, jenachdem wie oder ob ich überhaupt einen NameVirtualHost angebe.
Was genau ist dir an den Warnungen unklar?

Bitte jagt mich jetzt aber nicht gleich wieder zu anderen Seiten
Doch, und zwar zu http://httpd.apache.org/docs/2.2/vhosts/. Diese und die verlinkten Seiten liest du.
 
@Roger
Ha, genau das ist es. Da bin ich immer ganz knapp dran vorbeigeschifft :rolleyes:

Code:
NameVirtualHost 1.1.1.1:80
NameVirtualHost 2.2.2.2:80
Das muss in die ports.conf und in der jeweiligen tld.conf darf kein NameVirtualHost angegeben werden.

Dann geht es jetzt nämlich auch.

Und, die Doku habe ich gelesen, mehrfach, auch in anderen Sprachen. huschi.net, lingoworld.de, zig Listen und nach einiges mehr.

Mein Problem war, dass ich die NameVirtualHost jeweiligen Domain-Confs gepackt hatte, daher auch das Problem mit der Reihenfolge.

Auf meinem alten Suse 9.3 macht es auch keine Probleme, denn da stehen die ganzen vhosts in einer Datei ;-)

Und bei meinem Debian Etch steht nirgends was von einem NameVirtualHost, bzw. nur der *:80 und den Server hat der Provider eingerichtet. 3 IPs, 40 Domänen. Doch genau dabei kommt dann auch die Warnung, aber nur auf dem Lenny-System, beim Etch nicht.

Danke Dir

Gruß
 
Last edited by a moderator:
So, also wie gesagt, die Warnungen bezüglich der NameVirtualHost sind weg, aber nicht meine eigentlichen Probleme. Dachte eigentlich die würden sich damit auch erledigen, aber nein...

Diesmal mit drei Domänen die auch so heißen, habe sie am Ende nur etwas gekürzt mit __

absa__.de
abso__.de
afer__.de

Sind alle Seiten disabled, dann kommt bei jedem Aufruf, egal welche Domain der Default (vaw/www), das passt also

Aktiviere ich die absa__.de scheint es auch noch zu gehen
Code:
[COLOR="SeaGreen"]absa__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]absa__.de[/COLOR]/public_html
www.[COLOR="SeaGreen"]absa__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]absa__.de[/COLOR]/public_html
cc.[COLOR="SeaGreen"]absa__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]absa__.de[/COLOR]/public_html (ist unschön und darf nicht sein, aber das viel später)

Alle anderen Seiten ergeben immer noch Default (vaw/www).

aktiviere ich nun meine dritte Seite afer__.de wird es schon komisch. absa__.de ist dann immer noch wie oben angegeben.
Code:
[COLOR="SeaGreen"]afer__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]afer__.de[/COLOR]/public_html
www.[COLOR="SeaGreen"]afer__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]afer__.de[/COLOR]/public_html
cc.[COLOR="SeaGreen"]afer__.de[/COLOR] -> var/www/[COLOR="SeaGreen"]afer__.de[/COLOR]/public_html (ist unschön und darf nicht sein, aber das viel später)
afer__.de funktioniert also auch, mal abgesehen von den nicht existierenden Subdomänen.

Aber das Kuriose ist nun, dass bei der deaktivierten abso__.de eben nicht mehr der Default kommt.
Gut, der Default wird nur genommen, wenn kein anderer vHost vorhanden ist. Sind welche vorhenden, dann nimmt Debian den ersten, sortiert nach dem Alphabeth. Also in dem Fall dann normalerweise den absa__.de, so hatte ich es verstanden und stand eigentlich auch überall so.

Aber dem ist nicht so!
Code:
[b][COLOR="Red"]abso__.de[/COLOR][/b] -> var/www/[b][COLOR="Red"]afer__.de[/COLOR][/b]/public_html
[b]www.[COLOR="Red"]abso__.de[/COLOR][/b] -> var/www/[b][COLOR="Red"]afer__.de[/COLOR][/b]/public_html
[b]cc.[COLOR="Red"]abso__.de[/COLOR][/b] -> var/www/[b][COLOR="Red"]afer__.de[/COLOR][/b]/public_html (ist unschön und darf nicht sein, aber das viel später)

Hier sollte doch, wenn schon nicht der Default, der erste vHost kommen, also der absa__.de, warum ist dem nicht so?
 
Hier sollte doch, wenn schon nicht der Default, der erste vHost kommen, also der absa__.de, warum ist dem nicht so?
Da du weder die relevanten Teile deiner Apache httpd Konfiguration (ich meine nicht den kastrierten Ausschnitt aus deinem ersten Beitrag), noch die konkreten Domainnamen genannt hast, könnten wir nur raten. Und zum Raten habe zumindest ich keine Lust.
 
Hi, also raten soll auch keiner, reicht schon wenn ich hier rate. Also dann mal alle Dateien die so da sind.

/etc/apache2/http.conf ist leer

/etc/apache2/apache2.conf:
Code:
ServerRoot "/etc/apache2"

LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

DefaultType text/plain

HostnameLookups Off

ErrorLog /var/log/apache2/error.log
LogLevel debug

Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

# Include generic snippets of statements
Include /etc/apache2/conf.d/

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

/etc/apache2/ports.conf
Code:
Listen 80
<IfModule mod_ssl.c>
    Listen 443
</IfModule>

NameVirtualHost 1.1.1.1:80
NameVirtualHost 2.2.2.2:80

/etc/apache2/sites-enabled/000-default
Code:
<VirtualHost *:80>
        ServerAdmin postmaster@domain.de

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes 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 /var/log/apache2/error.log
        LogLevel debug

        CustomLog /var/log/apache2/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>


/etc/apache2/sites-enabled/absa__.de.conf
Code:
<VirtualHost 1.1.1.1:80>

        ServerAdmin postmaster@domain.de
        ServerName absa__.de
        ServerAlias www.absa__.de

        DocumentRoot /var/www/absa__.de/public_html

        ErrorLog /var/www/absa__.de/logs/error_log
        CustomLog /var/www/absa__.de/logs/access_log combined

        DirectoryIndex index.php index.html

        <Directory /var/www/absa__.de/public_html>
                Options Indexes IncludesNOEXEC FollowSymLinks
                Allow from all
        </Directory>

        <Directory /var/www/absa__.de/cgi-bin>
                allow from all
        </Directory>

</VirtualHost>

/etc/apache2/sites-enabled/afer__.de.conf
Code:
<VirtualHost 2.2.2.2:80>

        ServerAdmin postmaster@domain.de
        ServerName afer__.de
        ServerAlias www.afer__.de

        DocumentRoot /var/www/afer__.de/public_html

        ErrorLog /var/www/afer__.de/logs/error_log
        CustomLog /var/www/afer__.de/logs/access_log combined

        DirectoryIndex index.php index.html

        <Directory /var/www/afer__.de/public_html>
                Options Indexes IncludesNOEXEC FollowSymLinks
                Allow from all
        </Directory>

        <Directory /var/www/afer__.de/cgi-bin>
                allow from all
        </Directory>

</VirtualHost>

Fehlt jetzt noch was? Das war eigentlich alles oder? Mehr Seiten sind derzeit nicht aktiv. im error.log steht auch nicht ausser den Meldungen für das Beenden und Neustarten des Apache.

Nachtrag:
Eben habe ich mal zum testen die Default geändert und dort zwei vhosts eingetragen, jeweils mit der eigentlichen IP 1.1.1.1:80 und 2.2.2.2:80 anstelle dem vorhandenen *.80

So kommt zumindest schon mal der Default (/var/www) bei nicht vorhandenen Subdomänen.
 
Last edited by a moderator:
Hm, also langsam weiß ich nicht mehr weiter. Die Namen der Domänen. Die stehen doch da, nur eben gekürzt. Das sind Testdomänen auf denen sich kein anderer tümmeln soll, daher schreibe ich die hier ja auch nicht aus. Und die VirtualHost-Abschnitte. Die stehen doch auch da oder gibt es da etwa noch mehr davon?
 
Also ok, das wird hier dann wohl nichts. Ich kann die Domänen nicht komplett hier ausschreiben, die Gründe habe ich genannt. Mit raten hat das aber nichts zu tun, denn es fehlen nur drei Buchstaben am ende, der Rest passt.

Die vhosts passen auch, hatte ja geschrieben im letzten Post, dass drei Domänen auf den Server aufgeschalten sind, aber nur zwei angelegt und aktiviert. Für diese zwei habe ich die confs genannt. Die anderen sind nicht drauf, kann ich daher nicht posten.

Danke Dir dennoch.

Gruß.
 
Die vhosts passen auch, hatte ja geschrieben im letzten Post, dass drei Domänen auf den Server aufgeschalten sind, aber nur zwei angelegt und aktiviert.
Das Problem ist, dass du denkst, es würde alles passen. Aber offensichtlich tut es das nicht.

Hier sollte doch, wenn schon nicht der Default, der erste vHost kommen, also der absa__.de, warum ist dem nicht so?
Vermutlich weil abso__.de und afer__.de den gleichen A Resource Record haben. Aber das ist nur geraten, weil du keine harten und vor allem kompletten Fakten lieferst.

Wie du unter http://httpd.apache.org/docs/2.2/vhosts/details.html bestimmt schon gelesen hast (oder gelesen haben solltest):
The first vhost on this list (the first vhost in the config file with the specified IP address) has the highest priority and catches any request to an unknown server name or a request without a Host: header field.
 
"Vermutlich weil abso__.de und afer__.de den gleichen A Resource Record haben"
Jep, genau dem ist so. Und so hatte ich es mir nun auch schon gedacht, als ich mir vorhin eine vierte Domain aufgeschalten, aber nicht aktiviert hatte. Dann wurde die als Standard genommen. Ok, der erste vHost auf der IP, so leuchtete es auch ein.

Aber sorry, eines möchte ich an der Stelle aber sagen. Hier (http://httpd.apache.org/docs/2.2/de/vhosts/details.html) und hier http://httpd.apache.org/docs/2.2/de/vhosts/name-based.html steht das in der Tat so drinnen, aber auf allen anderen deutschen Seiten auf denen ich war nicht, auch nicht in den Büchern zu Debian und Apache. Da steht immer "der erste" nicht "der erste auf der IP". Und nach stundenlangen lesen der eigentlich immer wieder gleichen Dokumente übersieht man dann schon mal was bzw. überfliegt es nur noch. Aber eines habe ich jedenfalls schon wieder mal gelernt. Tutorials und Anleitungen sind eigentlich unbrauchbar und funktionieren nur mit Glück. Das Handbuch des Herstellers ist das einzig wahre.

Aber auch wenn der Post nicht direkt viel gebracht hat, so bin ich dennoch einen Schritt weiter. Solche "Anstöße" reichen halt auch aus :-)

Ob mein Weg nun richtig ist der nicht weiß ich nicht, aber das werde ich hoffentlich rechtzeitig merken. Habe nun wie oben schon mal gesagt die Default geändert und dort einen zweiten VirtualHost angelegt. Der erste nun für die IP 1.1.1.1:80 und der zweite für die 2.2.2.2:80. Die Standardvorgabe *:80 ist weg.

Nun klappt es auch wie gewollt. Es kommt immer der Default (/var/www) wenn es eine Domäne nicht aktiviert ist oder es die Subdomain nicht gibt. Aber wie schon bei dem anderen, das stand auch nirgends, zumindest nicht so, dass man es einfach finden könnte.

Danke Dir!

Gruß
 
Last edited by a moderator:
Aber eines habe ich jedenfalls schon wieder mal gelernt. Tutorials und Anleitungen sind eigentlich unbrauchbar und funktionieren nur mit Glück. Das Handbuch des Herstellers ist das einzig wahre.
Wunderbar. Das ist das Beste, was du aus dem Problem mitnehmen konntest! :)

Aber auch wenn der Post nicht direkt viel gebracht hat, so bin ich dennoch einen Schritt weiter. Solche "Anstöße" reichen halt auch aus :-)
Das hättest du einige Beiträge früher haben können, wenn du die kompletten Daten gepostet hättest...
 
Back
Top