PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2 und VirtualHosts. HILFE



exponator
12.01.13, 02:30
Moin Leute

Mein Prob auf jetzt opensuse 12.2 liegt beim Apache Server.
Ich hatte zuvor nur einen Host. Das lief so prima, dass ich mir dachte einen weiteren Host als virtuellen Host anzulegen.
Ich habe nun einen virtuellen Host zusätzlich angelegt jedoch nun mit dem Fehler, dass ich, egal welche WWW-Adresse aufgerufen wird, immer auf dem virtuellen Host lande.
Die configs sind so eingestellt wie es viele Hilfeseiten -auch die von http://httpd.apache.org/docs/2.0/de/- ansagen.
Die Hauptdirektive liegt auf /srv/www/
Die VHosts-Direktive auf /srv/www/vhosts/
In den jeweiligen Unterordnern, die genauso lauten wie die Webadressen, liegen die Dateien der VHosts.
Selbst wenn ich die Web-IP-Adresse aufrufe lande ich auf dem VHost.
Normalerweise sollte es namenbasiert laufen, weil ich nur eine Netzwerkkarte habe.
Heißt:
Ich rufe eineadresse.tld auf und lande auf eineadresse.tld
Ich rufe andereadresse.tld auf und lande auf andereadresse.tld

Ich hoffe, das wurde soweit verstanden.

Leider läuft es momentan so, dass ich in beiden Fällen auf andereadresse.tld lande.

Meine configs:
/etc/apache2/httpd.conf


#
# /etc/apache2/httpd.conf
#
Include /etc/apache2/uid.conf
Include /etc/apache2/server-tuning.conf
ErrorLog /var/log/apache2/error_log
Include /etc/apache2/sysconfig.d/loadmodule.conf
Include /etc/apache2/listen.conf
Include /etc/apache2/mod_log_config.conf
Include /etc/apache2/sysconfig.d/global.conf
Include /etc/apache2/mod_status.conf
Include /etc/apache2/mod_info.conf
Include /etc/apache2/mod_usertrack.conf
Include /etc/apache2/mod_autoindex-defaults.conf
TypesConfig /etc/apache2/mime.types
DefaultType text/plain
Include /etc/apache2/mod_mime-defaults.conf
Include /etc/apache2/errors.conf
Include /etc/apache2/ssl-global.conf
<Directory "/">
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
DirectoryIndex index.html index.html.var
Include /etc/apache2/default-server.conf
Include /etc/apache2/sysconfig.d/include.conf
Include /etc/apache2/vhosts.d/*.conf
# SSLEngine off
UserDir "/srv/www/"
Options ExecCGI FollowSymLinks Includes IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch
ServerName pccenter24.ath.cx
HostNameLookups off
#NameVirtualHost *
/etc/apache2/listen.conf


#Listen 12.34.56.78:80
Listen 80
#Listen 443

<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>

Listen 443

</IfModule>
</IfDefine>
</IfDefine>
/etc/apache2/default-server.conf

#
# Global configuration that will be applicable for all virtual hosts, unless
# deleted here, or overriden elswhere.
#
DocumentRoot /srv/www
#
# Configure the DocumentRoot
#
<Directory "/srv/www">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
<Directory "/srv/www/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
#
<IfModule mod_userdir.c>
# Note that the name of the user directory ("public_html") cannot simply be
# changed here, since it is a compile time setting. The apache package
# would have to be rebuilt. You could work around by deleting
# /usr/sbin/suexec, but then all scripts from the directories would be
# executed with the UID of the webserver.
# The actual configuration of the directory is in
# /etc/apache2/mod_userdir.conf.
Include /etc/apache2/mod_userdir.conf
</IfModule>
#
Include /etc/apache2/conf.d/*.conf
# The manual... if it is installed ('?' means it won't complain)
Include /etc/apache2/conf.d/apache2-manual?conf
ServerAdmin ********@tld.net
/etc/apache2/vhosts/eineadresse.tld.conf


<VirtualHost *>
DocumentRoot /srv/www/vhosts/eineadresse.tld
ServerName eineadresse.tld
ServerAdmin ********@tld.net
ErrorLog /var/log/apache2/eineadresse.tld.error_log
CustomLog /var/log/apache2/eineadresse.tld.access_log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
<Directory "/srv/www/vhosts/eineadresse.tld">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Dementsprechend die zweite VHost im Ordner andereadresse.tld

Braucht Ihr noch mehr Infos? Sagt Bescheid.
Ich hab keine Ahnung was da falsch läuft. Unter opensuse 11.4 war alles OK.

nopes
12.01.13, 19:27
Hi,

die Konfiguration sagt doch, dass der VHost für *ALLE* Adressen antworten soll, s.a. http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost
Das Zeichen *, welches nur in Kombination mit NameVirtualHost * verwendet wird, um allen IP-Adressen zu entsprechen.

exponator
13.01.13, 05:18
Hi,

die Konfiguration sagt doch, dass der VHost für *ALLE* Adressen antworten soll, s.a. http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost
Danke. Aber irgendwie stehe ich aufm Schlauch.
Wie müssen denn die congfigs dann richtig lauten?
Ich habe nun schon vieles durch. Immer ohne Erfolg.

nopes
13.01.13, 15:59
Hi,

also vernünftiger weise solltest du erstmal wissen bzw. entscheiden, wie du vhosten willst. Das geht zum einem Namens basiert oder IP gestützt.
Ich finde, IP basiertes wesentlich besser, aber das ist nur meine Meinung.

Egal wie, es müssen beide Namen gefunden werden, d.h. sie müssen DNS technisch in IPs umgewandelt werden können. Falls du nicht direkt in deinen DNS-Server fummlen willst, kann es auch in den Host-Dateien geschehen (dann aber auf jeden Client!!!); Beispiel:
192.168.100.100 vhost1 vhost2Die Configs könnten dann so aussehen:
<VirtualHost 192.168.100.100>
ServerName vhost1
DocumentRoot "/var/www/vhost1"
</VirtualHost>

<VirtualHost 192.168.100.100>
ServerName vhost2
DocumentRoot "/var/www/vhost2"
</VirtualHost>So und nun IP-Basiertes vhosting, auch hier muss natürlich die Namensauflösung klappen! Als erstes erstellen wir neue Netzwerkkarten, dazu muss bei Debian /etc/network/interfaces angepasst werden, Beispiel:
auto lo eth0 eth0:1

iface lo inet loopback

iface eth0 inet static
address 192.168.100.100
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255
gateway 192.168.100.1

iface eth0:1 inet static
address 192.168.100.101
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255
gateway 192.168.100.1Beachte, dass die Stelle je nach Distribution anders ist, auch die Syntax kann etwas anders sein, die Möglichkeit selbst hat aber jedes Linux! Noch den DNS anpassen, oder eben die /etc/hosts:
192.168.100.100 vhost1
192.168.100.101 vhost2Wie auch immer die Config kann dann so aussehen:
<VirtualHost 192.168.100.100>
ServerName vhost1
DocumentRoot "/var/www/vhost1"
</VirtualHost>

<VirtualHost 192.168.100.101>
ServerName vhost2
DocumentRoot "/var/www/vhost2"
</VirtualHost>

[EDIT]Es spricht ja auch nichts gegen den *, nur ist das halt nicht so toll, wenn jemand die IP anstatt des Namens eintippt. Außerdem finde ich, dass das uneindeutig ist, daher bevorzuge ich eben IP basiertes vhosting.

exponator
13.01.13, 23:35
Hi nopes
du hast dir unheimlich viel Mühe gemacht. Dafür zunächst herzlichen Dank.
Das sieht gut aus.
Du schreibst:

Egal wie, es müssen beide Namen gefunden werden, d.h. sie müssen DNS technisch in IPs umgewandelt werden können.
Das tun / sollten sie ja wohl. Die Adressen bestehen bei Hostern von dynamischen DNS IPs.
Daher wäre es vielleicht nicht sinnvoll sie im eigenen DNS-Server oder in die hosts einzupflegen.
Sie sollen ja von AUßEN erreichbar sein.
Ich glaube auch im Apache-Wiki gelesen zu haben, dass, macht man es IP basiert, man auch mehrere Netzwerkkarten haben muss. Oder hab ich das missverstanden?
Ergo würde ich namenbasiert vorziehen.
Sprich:
Wird die vhost1 mit Namen von Außen angewählt, soll Apache die vhost1 zeigen.
Genauso mit der vhost2.
Da fällt mir was ein:
Ich kann doch in einer Netzwerkkarte zur default-Adresse noch virtuelle Adressen hinzufügen und mit Namen versehen.
Kann ich nicht diese Namen und IPs für die vhosts nutzen?
Das müsste doch gehen. Oder?
Ich probier das mal und melde den Erfolg / Misserfolg.

exponator
14.01.13, 00:56
Schade. das hat nicht funktioniert, weil virtuelle Namen bei der NW-karte keine Punkte zulassen

exponator
16.01.13, 14:37
Wieso ist das so schwierig?
Oder stelle ich mich nur dumm an?
Ich stehe wie ein Ochs vorm Berg. :confused:

nopes
19.01.13, 17:44
Hi,

bitte etwas genauer erklären was nicht oder klappt; btw was meinst du mit virtuellen Namen?

Und noch was, probiere doch erstmal vhosting ohne was externes ala dyndns, wenn du das im Griff hast, dann ist der Rest ein Klacks.

exponator
19.01.13, 23:51
Hey nopes.
Hat sich erledigt. Danke erst mal.
Hatte nur ein kleine Kleinigkeit vergessen.
Jetzt klappts.