| 

.NET C# Java Javascript Exception

1
Hey,

ich will in den nächsten Wochen einen Rootserver mieten und brauch mal einen Tipp. Ich werde auf dem Server mehrere Apache Tomcat, Node.js und Apache HTTP Server hosten. Jeder Server soll mit einer eigenen Domain bzw. Subdomain erreichbar sein. Immer über Port 80.

In meinen Versuchen konnte ich das bisher nur über verschiedene Ports lösen. also
- Tomcat => 8080
- 1 Node.js => 8081
- 2 Node.js => 8082
- 3 Node.js => 8083
- HTTP Apache => 80

Die einzelnen Server wollte ich mit Docker "virtualisiert" laufen lassen. Jetzt weiß ich nicht wie ich das hinbekomme, dass jede Domain zu ihrem korrekte Port weitergeleitet wird. Mit Docker geht das glaub ich nicht. KVM und XEN kann ich leider nicht installieren.

Ich hoffe ihr habt mein Problem verstanden und könnt mir helfen.

Vielen Dank im vorraus und viele Grüße
Marc Bellmann
News:
29.07.2014
Marc Bellmann 31 1 3
3 Antworten
0
Ich würde es mit einem Proxy lösen der auf Port 80 horcht und die einzelnen Domains auf die entsprechenden Prozesse verteilt. Die Prozesse wie Tomcat oder nodejs nutzen ihre eigenen Ports oder virtualisiert eigene interen IPs wie du es bereits implemtiert hast. Der Proxy lauft auf Port 80 und kann entweder ein Apache mir mod_rewrite sein, oder ein haproxy oder oder oder. Alle diese Proxies kennen Regeln wie Domainnamen gemappt werden können.
29.07.2014
BeachBlocker 617 3
0
Hi,

auf Port 80 kann nur ein Prozess lauschen. Das weißt du sicher. Alle anderen Server müssen mit ihrem jeweiligen Port von dem, der auf Port 80 lauscht angesprochen werden.

Apache hat dazu das Proxy Modul.

Such mal im Netz nach Apache Proxy Node.js. Da findest du viele Anleitungen, wie das geht.
29.07.2014
Andreas Richter 1,7k 1 2 8
0
So als Ergänzung zu den Antworten von BeachBlocker und Andreas Richter:

Da du den Apache httpd eh einsetzten möchtest und alles auf einer physischen Kiste laufen soll ist der Apache mit mod_proxy_http die einfachste Lösung.

Ausgehend von deiner Aufteilung

- Tomcat => 8080
- 1 Node.js => 8081
- 2 Node.js => 8082
- 3 Node.js => 8083
- HTTP Apache => 80

Die Ports bleiben so zugewiesen.

Alle (Sub-)Domains werden im Apache httpd als vhosts konfiguriert.

In der jeweiligen vhost-Konfiguration kannst du dann festlegen ob die Domain via mod_proxy alle Anfragen auf localhost:8080 (oder localhost:800x ...) weiterleitet und die Antworten an den Client zurückschickt oder einen normalen Webspace ausliefert.

Der "normale" Webspace kann mit mod_fcgi/mod_php/... immer noch dynamische Inhalte ausliefern, sofern eine (f)cgi-API existiert (perl, php, ruby, python, ...) oder ein passendes modul (php, ruby)

Für den Tomcat kannst du auch mod_jk oder mod_proxy_ajp verwenden. Ich würde vorerst bei mod_proxy_http bleiben und bei bedarf mod_proxy_ajp bzw. mod_jk näher anschauen.

Der Nachteil von dieser Proxy-Lösung ist der höhere Ressourcen-Verbrauch, wenn deine Anwendungen aber nicht sehr viele User bedienen müssen oder ansonsten extrem Ressourcen-Hungrig sind sollte das alles auf einem hinreichend dimensionierten Rootserver akzeptable laufen.

Mit mod_rewrite kannst du auch einen Proxy realisieren, die Syntax ist anders, je nach Anwendungsfall einfacher oder umständlicher. Dafür kann ein Proxy mit mod_rewrite auch in einer .htaccess-Datei konfiguriert und ohne apache-reload geändert werden. Allerdings soll die Performance von mod_rewrite etwas schlechter sein.
29.07.2014
phg 1,6k 4

Stelle deine Server-Frage jetzt!