# Ersatz für Proxy / interne "Host-Umleitung"



## fanste (7. Juli 2009)

Guten Morgen,

der Titel ist vielleicht etwas verwirrend. Ich bin mir auch nicht ganz im klaren, wie ich es benennen soll.

Ich bin Coder und auch für kleinere Serverwartungen zuständig bei einem kleinen Community-Webspace-Project. Da das Projekt noch nicht genügend Werbeeinnahmen abwirft (Werbeblockern sei Dank! -.- ), haben wir zur Zeit nur einen Server am laufen, der sowohl die Hauptseite, als auch die Userseiten sowie die MySQL-Datenbank beherbergt.
Momentan sieht es so aus, dass wir aufgrund von verschiedenen Konfigurationen (Apache-Module, PHP, usw) 2 Indianer am laufen haben, welche einmal die Hauptseite (+ allem drum herum) und einmal die Userseiten bearbeitet.
Damit die (Sub-)Domains dem richtigen Apache zugeordnet werden, haben wir auf eth0 2 "virtuelle Interfaces" eth0:1 (10.10.0.1) und eth0:2 (10.10.0.2) eingerichtet, die nun jeweils einem Apachen zugeordnet sind, welche wiederum von einem Pound-Server bedient werden - und hier sitzt der eigentlich Grund für mein Posting.

Ich würde gerne auf Pound verzichten und etwas besseres finden. Er verbraucht doch recht viele Resourcen und wenn die Backend-Server (also Apache) mal etwas zu lange braucht, bricht er die Verbindung auf einfach mal ab (am Timeout wurde schon gespielt). Des Weiteren finde ich pound für diese Zwecke ein bisschen fehl am Platz (viel zu viele Features werden gar nicht benötigt). Für ein Feature, welches wir später noch implementieren wollen, ist Pound auch eher ungeeignet, wegen der nich so leicht zu automatisierenden Konfiguration.

Daher die Frage, ob man das auch irgendwie über eine interne DNS Auflösung oder Ähnlichem regeln kann. Sprich, dass nicht noch ein Proxy dazwischen hängt, sondern die externe IP auf Host-Basis intern auf 10.10.0.1/.2 umgeleitet (bzw. ge-forwarded) wird.

Ich kenne mich dazu noch zu wenig auf diesem Gebiet aus und bei den DNS-Servern wie Bind & Co blicke ich noch nicht ganz durch. Auch der eigentliche Serververwalter hatte noch keine passende Idee.
Ich hatte mir auch schon überlegt, dass dies evt. über IPTables machbar sein könnte. Doch irgendwo habe ich gelesen, dass das nur mit IPs arbeiten kann und nicht mit Hosts.
Daher die Frage, falls ihr mein Anliegen wirklich verstanden habt, ob ihr einen Vorschlag habt bzw. mir Hinweise/Tipps geben könnt. Ansonsten muss ich es eben lassen wie es ist und mit den Nachteilen leben.

€dit:
Eine Kleinigkeit habe ich noch vergessen.
Wenns es am Ende möglich sein sollte, dass man wieder auf die "virtuellen Interfaces" verzichten kann, wäre das auch nciht schlecht. Sprich der Apache für die Hauptseite & Co. läuft ganz normal auf Port 80 auf der normalen IP (eth0) und der andere auf Port 81 (als Beispielt) und kann von außen nicht direkt angesprochen werden (nur über die "Umleitung")


----------



## Matthias Reitinger (7. Juli 2009)

Hallo fanste,

ist das mit den zwei Apache-Instanzen denn wirklich nötig? Man kann doch die meisten Einstellungen per Verzeichnis bzw. VirtualHost setzen. Was ist der genaue Grund dafür, dass das hier nicht geht?

Ansonsten könnte man wie du schon meintest den zweiten Apachen auf einem anderen Port lauschen lassen. Der Zugriff von außen könnte man dann über den Haupt-Apachen  via Reverse Proxying lösen.

Grüße, Matthias


----------



## fanste (7. Juli 2009)

Was dann doch wieder auf einen Proxy hinauslaufen wurde.
Für die Userhosts haben wir ein eigens entwickelt Modul, dafür haben wir also nur vHost. Es waren zu viele verschiedene Gründe, wieso wir auf zwei unterschiedlich konfigurierte Apache umgestiegen sind. 
Desweiteren müssten wir auch wieder auf das System mit den 2 Instanzen und der Auflösung zurückgreifen, sobald das Geld reicht, um den zweiten Server mit zu finanzieren. Ich kann schlecht verlangen, dass ich Zugriff auf den Core-Router bekomme, um den einzelnen Userdomains, sobald sie registriert werden, dort einen EIntrag zum passenden Server zu geben.

Anders als mit einem Proxy geht es nicht?


----------



## Matthias Reitinger (7. Juli 2009)

fanste hat gesagt.:


> Anders als mit einem Proxy geht es nicht?


Mir fällt zumindest gerade keine andere Möglichkeit ein. Aber so kostspielig (bezüglich Resourcenverbrauch) ist das auch nicht. Wenn du mod_proxy verwendest, erledigt das ja alles der Haupt-Apache. Eine entsprechende Konfiguration könnte so aussehen:

```
<VirtualHost 1.2.3.4:80>
  ServerName subdomain.example.net
  # Nicht als öffentlicher Proxy fungieren:
  ProxyRequests Off
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  # Weiterleitung aller Anfragen an den zweiten Apache:
  ProxyPass / http://localhost:3000/
</VirtualHost>
```
Grüße, Matthias


----------



## fanste (7. Juli 2009)

Ok, dann werde ich das mal direkt über den Apache testen. Wenn man nur mit ProxyPass arbeitet, wir dann die Anfrage weitergeleitet und der 2. Apache schickt die Antwort direkt an den Client zurück, oder läuft das auch alles wieder über den ersten Apache?

Ich hatte noch etwas von einem System gelesen,w elches die eingehende Anfrage umschreiben muss und der 2. Service dann direkt an den Client zurücksendet. jedoch nur auf IP-Basis :/

Danke schonmal


----------



## Matthias Reitinger (7. Juli 2009)

fanste hat gesagt.:


> Ok, dann werde ich das mal direkt über den Apache testen. Wenn man nur mit ProxyPass arbeitet, wir dann die Anfrage weitergeleitet und der 2. Apache schickt die Antwort direkt an den Client zurück, oder läuft das auch alles wieder über den ersten Apache?


Das läuft wieder über den ersten Apache zurück. Der zweite Apache bleibt dem Client also komplett verborgen.

Grüße, Matthias


----------

