Apache forwarding auf anderen Rechner

Alles, was den Apache betrifft, kann hier besprochen werden.

Apache forwarding auf anderen Rechner

Postby erich.wanker » 12. April 2010 16:48

Hallo Forum,

Ich habe eine Frage:
Ich hab eine fixe IP, Router routet Port 80 auf xampp-PC-192.168.0.10
Ich hab 4 Domains - die auf meine fixe IP gehen
Die ersten zwei Domain soll auf xampp-PC-192.168.0.10 gehen
Die anderen zwei Domains sollen auf xampp-PC-192.168.0.20
(Begründung: auf dem ersten PC läuft altes xampp mit php 4 und so spezielle Sachen / auf dem zweiten PC läuft php 5 und so spezielle Sachen)

Jetzt versuch ich schon eine Weile, das zu lösen ..

Auf xampp-PC-192.168.0.10 hab ich in der httpd-vhosts Datei:

Code: Select all
VirtualHost 192.168.0.10>
  ServerName http://www.domain1.at
  ServerAlias domain1.at
  ServerAlias domain1 //..................................................................die erste DOMAIN
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain1

    <Directory e:/www/domain1>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory></VirtualHost>


Code: Select all
<VirtualHost 192.168.0.10>
  ServerName http://www.domain2.at
  ServerAlias domain2.at
  ServerAlias domain2 //..................................................................die zweite DOMAIN
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain2

    <Directory e:/www/domain2>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory></VirtualHost>


Code: Select all
<VirtualHost 192.168.0.10>
ServerName http://www.domain3.at
ServerAlias domain3.at //..................................................................die dritte DOMAIN
redirect permanent / http://192.168.0.20/domain3/
</VirtualHost>


Code: Select all
<VirtualHost 192.168.0.10>
ServerName http://www.domain4.at
ServerAlias domain4.at //..................................................................die vierte DOMAIN
redirect permanent / http://192.168.0.20/domain4/
</VirtualHost>




Aber das funktioniert klarerweise nicht .. Wenn jemand ausserhalb meines Netzwerkes die Domains 3 + 4 aufruft, wird sein lokaler Browser auf 192.168.0.20 .. weitergeleitet

Wie kann ich das lösen (2e fixe IP ist leider nicht drinnen ..)

Vielen Dank für die Hilfe

mfg Erich
Last edited by erich.wanker on 15. April 2010 09:38, edited 1 time in total.
erich.wanker
 
Posts: 17
Joined: 11. November 2009 14:46

Re: Apache forwarding auf anderen Rechner

Postby Pitze » 12. April 2010 18:15

Router routet Port 80 auf xampp-PC-192.168.0.10

Warum nur die eine IP auf port 80??
2e fixe IP ist leider nicht drinnen ..)

wofür auch alles andere macht ja der Router
Aber das funktioniert klarerweise nicht .. Wenn jemand ausserhalb meines Netzwerkes die Domains 3 + 4 aufruft, wird sein lokaler Browser auf 192.168.0.20 .. weitergeleitet

Ich denke nach deiner Erklärung soll das so sein. Was den nun, sollen 3+4 auf xx.xx.0.20 oder nicht?
Frage lies mal die Docu für Namens Basierte Vhorst durch ohne NameVirtualHost kommst du nicht weit. Wichtig das die Domainnamen auch existieren.
Der grösste Vertrauensbruch ist der Blitzableiter auf der Kirchturmspitze
User avatar
Pitze
 
Posts: 210
Joined: 20. November 2003 21:38
Location: Huskvarna-Schweden
Operating System: Windows Vista

Re: Apache forwarding auf anderen Rechner

Postby Nobbie » 12. April 2010 18:18

erich.wanker wrote:Wie kann ich das lösen (2e fixe IP ist leider nicht drinnen ..)


Die einzige direkte Lösung besteht darin, die Apaches auf den einzelnen Rechner auf verschiedenen Ports laufen zu lassen. Dann kannst Du im Router pro Port den richtigen Rechner adressieren in der Weiterleitung. Das ist mit Abstand die beste Lösung.

Die einzige andere machbare Variante ist die Einrichtung von VirtualHosts auf dem ersten Rechner (wo Apache auf Port 80 läuft) und für die Domains (VirtualHosts), die auf den anderen Rechnern verarbeitet werden sollen, jeweils einen sog. Reverse Proxy einrichten. Also ganz grob so (Du solltest übrigens auch unbedingt Deinen Code in code-Tags und nicht in quote-Tags stellen, sonst werden unschöne Links aus den ServerNames generiert):

Code: Select all
NameVirtualHost 192.168.0.10

<VirtualHost 192.168.0.10>
ServerName www.domain1.at
ServerAlias domain1.at
ServerAlias domain1 //..................................................................die erste DOMAIN
AddType text/html .shtml
AddHandler server-parsed .shtml
DocumentRoot e:/www/domain1

<Directory e:/www/domain1>
Options Indexes FollowSymLinks
Options +Includes
AllowOverride FileInfo
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>

<VirtualHost 192.168.0.10>
ServerName www.domain2.at
ServerAlias domain2.at
ServerAlias domain2 //..................................................................die zweite DOMAIN
AddType text/html .shtml
AddHandler server-parsed .shtml
DocumentRoot e:/www/domain2

<Directory e:/www/domain2>
Options Indexes FollowSymLinks
Options +Includes
AllowOverride FileInfo
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>

<VirtualHost 192.168.0.10>
ServerName www.domain3.at
ServerAlias domain3.at //..................................................................die dritte DOMAIN
ProxyPass / http://192.168.0.20/domain3/
ProxyPassReverse / http://192.168.0.20/domain3/
</VirtualHost>

<VirtualHost 192.168.0.10>
ServerName www.domain4.at
ServerAlias domain4.at //..................................................................die vierte DOMAIN
ProxyPass / http://192.168.0.20/domain4/
ProxyPassReverse / http://192.168.0.20/domain4/
</VirtualHost>


Bei "einfachen" Seiten reicht das bereits aus, aber es gibt viele Situationen, wo allein diese beiden ProxyPass Angaben nicht ausreichen. Lies Dir Dokumentation dazu durch, es gibt auch viele Tutorials und Beispiele im Internet, ich kann von hier aus natürlich nicht sagen, ob es damit schon läuft.

Rein technisch sieht das dann so aus, dass der erste Apache alle Anfragen beantwortet, aber für Domain3 und Domain4 "unten herum" die Anfragen weiterleitet und die Antworten der jeweiligen Server selbst an die Clients zurückreicht. D.h. also, Du mußt in jedem Fall den ersten Rechner im laufen lassen, auch wenn nur Requests für Domain3 und Domain4 hineinkommen. Sauberer ist deswegen die Trennung über Ports, die hat lediglich den Nachteil, dass der Endanwender die Ports in den URLs explizit angeben muss, beispielsweise http://www.domain4.at:8040 (oder wie auch immer Du den Port definierst). Intern könntest Du den jeweiligen Apache dennoch auf Port 80 laufen lassen, falls Dir das angenehmer ist, denn die meisten Router können Ports nicht nur Forwarden, sondern auch ummappen, so dass ein Request auf den Router auf Port 8040 beispielsweise auf den Rechne 192.168.0.20 Port 80 geleitet werden könnte.

So wie ich es sehe, wird ohnehin Domain3 und Domain4 vom gleichen Server bedient, da reicht also eine einheitliche Portnummer für beide Domains, die Trennnung konntest Du dann wiederum durch VirtualHosts auf 192.168.0.20 erreichen (nach dem gleichen Strickmuster wie die Trennung von Domain1 und Domain2 auf den ersten Rechner). Wobei die Trennung durch VirtualHosts und entsprechende Domainnamen ja auch jetzt schon möglich wäre (anstelle der Trennung durch Verzeichnisnamen). Du kannst ja intern auf domain3.local und domain4.local (nur als Beispiel) weiterleiten, beide weisen auf die IP 192.168.0.20. Dann hättest Du beim ProxyPass auch ein Mapping von / auf / (statt / auf /domain3 beispielsweise, letzteres birgt Probleme bei absoluten URLs - aber das wirst Du ggf. von allein feststellen, falls es ein Problem sein sollte).
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Apache forwarding auf anderen Rechner

Postby erich.wanker » 12. April 2010 18:29

Hallo Pitze,

die 4 Domains haben alle die gleiche IP (wenn ich [start / ausführen / cmd / ping meine domain ] eingebe ...)
der Router routet diese eine IP zum xampp-PC-192.168.0.10
Durch die Vhosts Einträge kann ich diese 4 Domains wieder trennen und jeder Domain einen Ordner in htdocs zuordnen..

;-)

ABER:
2 Domains sollen auf dem x.x.0.10 Rechner liegen (das funktioniert - und ist auch kein problem)
&
2 Domains sollen auf dem x.x.0.20 Rechner liegen ( und das schaff ich leider nicht)

Hab schon mit dem "rewrite" und "redirect" rumprobiert - find aber keine Lösung.

Der x.x.0.10 Rechner soll alle Anfragen, die an http://www.domain3.at -oder- http://www.domain4.at gerichtet sind - automatisch an den rechner x.x.0.20 weiterleiten ..
Dort würde ich wiederum 2 VHosts einrichten, damit die beiden Domains dann wieder seperate Ordner haben ... oder so

mfg Erich
erich.wanker
 
Posts: 17
Joined: 11. November 2009 14:46

Re: Apache forwarding auf anderen Rechner

Postby Nobbie » 12. April 2010 18:32

Warum liest Du nicht meine Antwort, ich habe Dein Problem verstanden (und eine komplette Lösung skizziert)?
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Apache forwarding auf anderen Rechner

Postby erich.wanker » 12. April 2010 19:22

Hallo Nobbie,

sorry, das es so lange gedauert hat ..
Vielen Dank für deine ausführliche Hilfe !!!

Durch deine Erklärung ist mir jetzt schon einiges "klarer" geworden ...

Das mit verschiedenen Ports geht leider nicht. Die Proxy-Lösung ist ideal :-)
Ich hab deine Lösung ausprobiert .. wenn ich aber via "XAMPP Control Panel" den Apache neu starten will (nach httpd-vhosts.conf -Änderungen) - startet der nicht mehr ...

Ich denk mal, das ich irgendwo die "grundlegende Proxy-Funktion" aktivieren muss .. nur weiß ich noch nicht - wo...


LiGrü
Erich
erich.wanker
 
Posts: 17
Joined: 11. November 2009 14:46

Re: Apache forwarding auf anderen Rechner

Postby Nobbie » 12. April 2010 20:17

erich.wanker wrote:Ich denk mal, das ich irgendwo die "grundlegende Proxy-Funktion" aktivieren muss .. nur weiß ich noch nicht - wo...


Dann schau mal zum einen in den error_log von Apache (Bibel Nummer 1) und danach liest Du (wie schon angedeutet) die Apache Dokumentation (Bibel Nummer 2). Konkret die Seiten http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Und damit beantwortet sich schon einmal die elementarste Frage: das Modul mod_proxy muss geladen werden (siehe httpd.conf, da sind die Module alle eingetragen, aber meistens auskommentiert).

Rein aus Interesse: wieso "geht" die Port-Lösung nicht? Die funktioniert nämlich einwandfrei, die Proxy Lösung könnte (wie schon angedeutet) noch ganz schön Kopfzerbrechen bereiten. Das hängt davon ab, was so betrieben wird.
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Apache forwarding auf anderen Rechner

Postby erich.wanker » 15. April 2010 10:15

Hallo Leute,
Irgendwo hab ich noch einen Fehler .. nur finden tu ich nix ...

Fehler:
wenn ich domain3 und domain4 aufrufe, kommt immer der Inhalt von domain3 ?

Stand der Dinge:

Kurze Zusammenfassung:
    1 offizielle IP
    4 Domains (alle auf die eine officzielle IP)
    2 PC´s mit xampp
    2 Domains sollen auf PC 1 laufen (neuester Apache / PHP u.s.w)
    2 Domains sollen auf PC 2 laufen (alter Apache / altes PHP u.s.w)

PC1:
IP 192.168.0.181
keine Firewall

Hosts Datei:
Code: Select all
127.0.0.1 localhost
192.168.0.182 www.domain3.at
192.168.0.182 www.domain4.at


httpd Datei:
Code: Select all
Loadmodul proxy_module .. aktiviert
Loadmodul proxy_http_modul ... aktiviert


httpd-vhosts Datei:
Code: Select all
NameVirtualHost 192.168.0.181

<VirtualHost 192.168.0.181>
ServerName www.domain3.at
ServerAlias domain3.at
ProxyPass / http://192.168.0.182/
ProxyPassReverse / http://192.168.0.182/
</VirtualHost>

<VirtualHost 192.168.0.181>
ServerName www.domain4.at
ServerAlias domain4.at
ProxyPass / http://192.168.0.182/
ProxyPassReverse / http://192.168.0.182/
</VirtualHost>

<VirtualHost 192.168.0.181>
  ServerName www.domain1.at
  ServerAlias domain1.at
  ServerAlias domain1
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain1
    <Directory e:/www/domain1>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>
</VirtualHost>

<VirtualHost 192.168.0.181>
  ServerName www.domain2.at
  ServerAlias domain2.at
  ServerAlias domain2
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain2
    <Directory e:/www/domain2>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>
</VirtualHost>




#################################




PC2:
IP 192.168.0.182
keine Firewall

Hosts Datei:
Code: Select all
127.0.0.1 localhost
192.168.0.181 www.domain1.at
192.168.0.181 www.domain2.at


httpd Datei:
Code: Select all
standard...


httpd-vhosts Datei:
Code: Select all
NameVirtualHost 192.168.0.182

<VirtualHost 192.168.0.182>
  ServerName www.domain3.at
  ServerAlias domain3.at
  ServerAlias domain3
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain3
    <Directory e:/www/domain3>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>
</VirtualHost>

<VirtualHost 192.168.0.182>
  ServerName www.domain4.at
  ServerAlias domain4.at
  ServerAlias domain4
  AddType text/html .shtml
  AddHandler server-parsed .shtml
  DocumentRoot e:/www/domain4
    <Directory e:/www/domain4>
    Options Indexes FollowSymLinks
    Options +Includes
    AllowOverride FileInfo
    AllowOverride All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>
</VirtualHost>



Irgendwie scheint es, als würde der PC2 (192.68.0.182) den Domainnamen nicht richtig erkennen...

Für jede Hilfe dankbar

mfg

Erich
erich.wanker
 
Posts: 17
Joined: 11. November 2009 14:46

Re: Apache forwarding auf anderen Rechner

Postby Nobbie » 15. April 2010 21:49

ProxyPass / http://192.168.0.182/
ProxyPassReverse / http://192.168.0.182/


Das ist ja auch totaler Schwachsinn. Du routest alles auf 192.168.0.182.

Ich hatte es oben schon beschrieben, aber wenn Du es nicht liest, hilft es nichts. Du mußt NEUE VirtualHosts anlegen, a la domain3.local und domain4.local (oder wie auch immer Du die nennst). NICHT(!!!!) auf die IP routen, da gibt es keine NameBased VirtualHosts.
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Re: Apache forwarding auf anderen Rechner

Postby erich.wanker » 16. April 2010 09:32

Hallo Nobbie,

OK ... ich geb zu - ich hab nicht alles korrekt verstanden was du meintest.

Das mit dem Port (explizit in der URL) wollte ich nicht, da die Links 3 und 4 bereits in Google drinnen sind..

Und das mit "proxy_module" funktioniert NUN EINWANDFREI :D


Vielen Dank für deine Unterstützung und Hilfe

Mit freundlichen Grüßen

Erich
erich.wanker
 
Posts: 17
Joined: 11. November 2009 14:46


Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests