diamond72
Goto Top

Apache2 zwei vHosts auf einer DDNS-Domain

Guten Tag,

ich möchte gerne auf ein Debian mehrere vHosts einrichten, die über einen DDNS Anbieter auf einer gleichen Adresse erreichbar sein sollen.
Das heisst ich habe z.B. zwei Seiten in jeweils einen Ordner unter var/www/ welche über meine DDNS Adresse erreichbar sein sollen.
Alle anderen unter var/www/ Ordner sollen nicht erreichbar sein, wenn für diese keine vHost Konfiguration unter sites-enabled erstellt wurde.

Ich habe für die zu erreichbaren Seiten jeweils eine Konfiguration angelegt, welche auch aktiv sind. Jedoch Funktioniert immer nur eine Seite, da der Server den Pfad der funktionierenden Seite scheinbar als root Pfad erkennt:

Für die Seite 1 habe ich die 000-default Config genommen und angepasst:

<VirtualHost *:80>
ServerName "DDNS-SEITE"
ServerAdmin "Meine Mail-Adresse"
DocumentRoot /var/www/seite1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/seite1/>
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 ${APACHE_LOG_DIR}/error.log

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

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Die Homepage2 ist genauso angelegt, nur auf den Ordner2 angepasst

Ich wollte ungern für jeden Unterordner unter var/www eine .htaccess Datei anlegen, deswegen wollte ich es gerne über vHosts lösen.

Hab eich einen Denkfehler? Ist es vlt. nicht möglich vHosts auf eine gleiche URL erreichbar zu machen?

Content-ID: 278047

Url: https://administrator.de/contentid/278047

Ausgedruckt am: 25.11.2024 um 08:11 Uhr

Cthluhu
Cthluhu 22.07.2015 um 15:51:41 Uhr
Goto Top
Hi,

Naja, irgendwie müssen sich deine vhosts unterscheiden. Entweder IP-Adresse, Hostname oder Port.
Bei gleicher URL und IP muss du den Port anpassen.

mfg

Cthluhu
Diamond72
Diamond72 23.07.2015 um 10:15:37 Uhr
Goto Top
Reicht es wenn ich in den vHost Konfigurationen folgende Zeile nur änder und diesen in der Firewall öffne?

<VirtualHost *:80>

Sprich nur den Port.
Cthluhu
Cthluhu 23.07.2015 um 10:17:56 Uhr
Goto Top
Zitat von @Diamond72:

Reicht es wenn ich in den vHost Konfigurationen folgende Zeile nur änder und diesen in der Firewall öffne?

<VirtualHost *:80>

Sprich nur den Port.
Ja, sollte reichen.
In die apache config bei einem der beiden vhostes: <VirtualHost *:81>
Im Browser als URL: http://mein.server.lan:81

mfg

Cthluhu
Diamond72
Diamond72 23.07.2015 um 10:39:39 Uhr
Goto Top
Es geht nicht!

Vielleicht noch einmal zu meiner Situation. Ich habe unter /var/www/ mehrere Seiten. Die Seiten sind seperat jeweils in einem Ordner. Standartgemäß ist die 000-default Konfiguration ja so ausgerichtet, dass auf alles was auf /var/www/ zu finden ist erreichbar sein soll. Da ich nur zwei der Seiten freigeben möchte habe ich für die beiden Seiten jeweils eine vHost Konfiguration angelegt. Ich habe die 000-default für den Pfad der ersten Seite angepasst und eine zusätzliche Konfiguration für die zweite Seite angelegt. Damit beide vHosts sich nicht ins gehäge kommen, habe ich in der zweiten Konfiguration den Port geändert. Der Port ist im Router offen und der Apache2 Dienst ist neugestartet. Jedoch ist die Seite nicht erreichbar.
Cthluhu
Cthluhu 23.07.2015 um 10:47:47 Uhr
Goto Top
Hast du die "Listen" Direktive beim apache angepasst?
Diamond72
Diamond72 23.07.2015 um 10:51:10 Uhr
Goto Top
ja, meinst du die ports.conf ?
Dort habe ich
Listen PORT
NameVirtualHost *:PORT

eingetragen
Cthluhu
Cthluhu 23.07.2015 um 11:01:23 Uhr
Goto Top
Zitat von @Diamond72:

ja, meinst du die ports.conf ?
Dort habe ich
Listen PORT
NameVirtualHost *:PORT

eingetragen
Ja, das meinte ich. Den Listen eintrag brauchst du für beide Ports.
Diamond72
Diamond72 23.07.2015 um 11:06:52 Uhr
Goto Top
Die sind beide drin. Trotzdem ist die Seite über den Port nicht zu erreichen. Fehlt noch etwas?
Cthluhu
Cthluhu 23.07.2015 um 11:44:47 Uhr
Goto Top
Zitat von @Diamond72:

Fehlt noch etwas?

Aus dem stehgreif fehlt mir nichts mehr ein was fehlt. Was sagen die logs?
Diamond72
Diamond72 23.07.2015 um 12:20:04 Uhr
Goto Top
Die Logdatei für die zweite Seite ist leer.
Für die erste Seite steht folgendes drin:

Errorlog:

[Thu Jul 23 05:07:26 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:26 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:26 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:42 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:42 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:42 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 05:07:42 2015] [error] [client "IP"] Invalid method in request \x16\x03\x01
[Thu Jul 23 06:23:52 2015] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze19 with Suhosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
Cthluhu
Cthluhu 23.07.2015 aktualisiert um 12:28:02 Uhr
Goto Top
Das sieht aus als ob der Client unverschlüsselt zugreift obwohl der Server SSL aktiviert hat.

Edit: Check ma deine URL mit der du die Seiten aufrufst. Häufiger fehler: http und https vertauscht bzw ":PORT" fehlt am ende.
Diamond72
Diamond72 23.07.2015 um 12:30:17 Uhr
Goto Top
Gut SSL ist zwar aktiviert, aber die beiden Seiten nutzen es nicht. Also erfolgt der Zugriff unverschlüsselt.
Daran liegt es sicherlich nicht. Was auffällig ist, warum bleiben die logs leer, wenn ich den Port in der URL eingebe. Scheinbar geht noch nicht alles durch!
Cthluhu
Cthluhu 23.07.2015 um 12:36:41 Uhr
Goto Top
Ok, dann liegt vllt der Fehler auf Netzwerkebene. Folgende Vorschläge:

Mal mit "netstat -tln" oder "ss -tln" am Server schauen ob der Port der zweiten vHosts auch tatsächlich offen ist.

Port-Based NAT am Router? => zweiten Port freigeben

Firewall/Router logs?

Mit Wireshark auf den Netwerkkarten des Clients und Server mitschauen ob die überhaupt Pakete austauschen wenn du den zweiten vHosts ansprichts.

mfg

Cthluhu
Diamond72
Diamond72 23.07.2015 um 12:42:01 Uhr
Goto Top
netstat -tln:

tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::81 :::* LISTEN

fritzbox:
HTTP-Server TCP 80 PC-WEBSERVER 80
HTTP-Server TCP 81 PC-WEBSERVER 80
Cthluhu
Cthluhu 23.07.2015 um 12:42:54 Uhr
Goto Top
Zitat von @Diamond72:
fritzbox:
HTTP-Server TCP 80 PC-WEBSERVER 80
HTTP-Server TCP 81 PC-WEBSERVER 80

Zweite Zeile: da sollte der Zielport ebenfalls 81 sein.
Diamond72
Diamond72 23.07.2015 aktualisiert um 12:51:50 Uhr
Goto Top
Ist geändert...geht nicht!

Muss vlt. noch was in der hosts eingetragen sein?
Was auch komisch ist. Die URL der ersten Seite ersetzt er komischer weise hiermit:

http://"lokale IP-Adresse des Webservers/Verzeichnis Seite1/wp-login.php?redirect_to=http%3A%2F%2F"DDNS-URL"%2F"Verzeichnis Seite1"%2F
Cthluhu
Cthluhu 23.07.2015 um 13:05:41 Uhr
Goto Top
Die hosts Datei sollt mit deinem Problem nichts zu tun haben.

Was sagt ein "apache2ctl -t -D DUMP_VHOSTS"?
Diamond72
Diamond72 23.07.2015 um 13:16:26 Uhr
Goto Top
wildcard NameVirtualHosts and _default_ servers:
*:81 is a NameVirtualHost
default server DDNS-URL (/etc/apache2/sites-enabled/SEITE2:1)
port 81 namevhost DDNS-URL (/etc/apache2/sites-enabled/SEITE2:1)
*:80 is a NameVirtualHost
default server DDNS-URL (/etc/apache2/sites-enabled/000-default:2)
port 80 namevhost DDNS-URL (/etc/apache2/sites-enabled/000-default:2)

Das sieht alles okay aus!
Cthluhu
Cthluhu 23.07.2015, aktualisiert am 29.07.2015 um 07:59:25 Uhr
Goto Top
Ja das schaut O.K. aus.

Also doch mit Wireshark am Client und am Server schauen ob die Pakete für am 81er Port durchgehen.
Diamond72
Diamond72 29.07.2015 aktualisiert um 08:19:59 Uhr
Goto Top
Ich habe die Distro nun komplett neu aufgesetzt. ich bekomme es einfach nicht hin.
Ist es denn Möglich den Zugriff NUR auf zwei Ordner, welche aauf /var/www liegen zu beschränken?

Folgendes Verhalten,

deaktiviere ich die 000-default, befinde ich mich auf das /var/www/html/ Verzeichnis, wenn ich die Seite über DDNS aufrufe
Cthluhu
Cthluhu 29.07.2015 um 15:14:41 Uhr
Goto Top
Zitat von @Diamond72:

Ist es denn Möglich den Zugriff NUR auf zwei Ordner, welche aauf /var/www liegen zu beschränken?
Ja, du kannst ordnerweise Berechtigungen vergeben: http://httpd.apache.org/docs/2.4/mod/core.html#directory
http://httpd.apache.org/docs/2.4/mod/mod_authn_core.html#authname
zusätzlich noch mit mod_authz_core/mod_authn_core