Rootserver mit Tomcat auf Port 80

Apache, Lighttpd, nginx, Cherokee
jogep
Posts: 11
Joined: 2005-02-15 10:22

Rootserver mit Tomcat auf Port 80

Post by jogep » 2008-04-16 11:53

Hallo,

ich habe einen Rootserver und möchte auf diesem nur einen Tomcat Server also ohne Apache laufen lassen. Damit dieser unter Port 80 und nicht unter Post 8080 aufzurufen geht habe ich folgend Befehl benutzt:

Code: Select all

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080


das hatte auch funktioniert bevor ich eine Domain für den Server registriert hatte. Ich konnte als mit http://123.456.789.0/admin auf den Tomcat Server zugreifen.

Nach der DNS Konfiguration wollte ich den Server mit http://meinedomain.de/admin erreichen bekomme aber im Browser nur URL Fehler angezeigt. Und das auch wenn ich wie vorher probiere mit der IP Adresse den Server zu erreichen.

SSH mit dem Domainnamen funktioniert allerdings und auch webmin aus port 10000 ist aufrufbar. Also kann ja die DNS Konfiguration nicht falsch sein oder?

Muss in der server.xml noch etwas konfiguriert werden damit ich den Server ansprechen kann?

Oder liegt ein Fehler in der Netzwerkkonfiguration vor?

Schon mal vielen Dank für eure Unterstützung
jogep

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Rootserver mit Tomcat auf Port 80

Post by oxygen » 2008-04-16 12:09

Du musst einen entsprechenden HOST Direktive in der server.xml hinzufügen. Im übrigen kannst du den Tomcat auch direkt auf Port 80 starten. Erwarte aber keine alzu gute Performance.

jogep
Posts: 11
Joined: 2005-02-15 10:22

Re: Rootserver mit Tomcat auf Port 80

Post by jogep » 2008-04-16 12:23

oxygen wrote:Du musst einen entsprechenden HOST Direktive in der server.xml hinzufügen. Im übrigen kannst du den Tomcat auch direkt auf Port 80 starten. Erwarte aber keine alzu gute Performance.


Danke für die schnelle Antwort

Hast du mal ein kurzes Beispiel für so eine Direktive?
Als ich den Port direkt auf 80 eingestellt habe bekam ich Fehler das ich diesen Dienst nicht auf Port 80 starten darf.
Im Netz hab ich dann irgendwo gelesen das unter Linux nicht jeder dienst auf den unteren Ports starten darf. Deshalb habe ich den Redirect genutzt.

Wieso ist die Performance schlechter als wenn ich alle Anfragen vom Apache weiterleite?

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Rootserver mit Tomcat auf Port 80

Post by oxygen » 2008-04-16 12:31

Für ein Beispiel schau in die Doku.
Um einen Port <1024 zu benutzten muss der Dienst als root User gestartet werden. Das hat übrigens nichts mit Linux zu tun, sondern ist bei so ziemlich jedem OS so.
Tomcat ist ziemlich lahm. Insbesondere viel langsamer bei statischem Content als z.B. Apache oder lighttpd.

jogep
Posts: 11
Joined: 2005-02-15 10:22

Re: Rootserver mit Tomcat auf Port 80

Post by jogep » 2008-04-16 12:42

oxygen wrote:Für ein Beispiel schau in die Doku.

Da hatte ich halt nichts gefunden mit dem ich etwas anfangen konnte. Werde aber noch mal nach sehen.

oxygen wrote:Um einen Port <1024 zu benutzten muss der Dienst als root User gestartet werden. Das hat übrigens nichts mit Linux zu tun, sondern ist bei so ziemlich jedem OS so.
Tomcat ist ziemlich lahm. Insbesondere viel langsamer bei statischem Content als z.B. Apache oder lighttpd.

Ich dachte es ist sicherer wenn ich den Dienst nicht als root starte. Oder macht das keinen Unterschied?

Ich dachte das mit dem "lahm" wäre nur ein altes und überholtes Vorurteil? Und da es bei mir hauptsächlich nur dynamischen Content gibt, hatte ich mich für den Tomcat Standalone entschieden. Gibt es da irgendwelche Benchmarks?

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Rootserver mit Tomcat auf Port 80

Post by oxygen » 2008-04-16 13:33

Einen benchmark kannst du selbst leicht machen. z.B. mit ab oder siege.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Rootserver mit Tomcat auf Port 80

Post by freddy36 » 2008-04-16 14:50

jogep wrote:
oxygen wrote:Ich dachte es ist sicherer wenn ich den Dienst nicht als root starte. Oder macht das keinen Unterschied?

In der Regel startet man den server als root, dann wird alles was als root gemacht werden muss (Ports < 1024, eventuell Zertifikate lesen, etc. gemacht), anschließend stuft sich der Server dann selbst auf einen anderen User runter. So läuft er nicht mehr als root aber hat die Kontroller über den Port.

jogep
Posts: 11
Joined: 2005-02-15 10:22

Re: Rootserver mit Tomcat auf Port 80

Post by jogep » 2008-04-16 15:29

Freddy36 wrote:In der Regel startet man den server als root, dann wird alles was als root gemacht werden muss (Ports < 1024, eventuell Zertifikate lesen, etc. gemacht), anschließend stuft sich der Server dann selbst auf einen anderen User runter. So läuft er nicht mehr als root aber hat die Kontroller über den Port.


Muss man da die Init Skripte ändern damit Tomcat als Root gestartet wird? Zur zeit geschieht das als Dienst beim starten.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Rootserver mit Tomcat auf Port 80

Post by freddy36 » 2008-04-16 16:14

jogep wrote:Muss man da die Init Skripte ändern damit Tomcat als Root gestartet wird? Zur zeit geschieht das als Dienst beim starten.

Ich hab ewig nichts mehr mit Tomcat zutun gehabt, das Programm muss das unterstützen, sollte aber eigentlich nicht schwer sein das zu implementieren, vielleicht hat es mal jemand gemacht.

Ich würde dir aber auch empfehlen noch was dazwischen zu schalten. Von einem Dicken Apache würde ich in deiner Situation auch absehen, ein einfacher Reverse Proxy der wirklich nur das dynamische Zeugs an den Tomcat schickt tut es dicke. Guck dir mal lighttpd oder nginx an.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Rootserver mit Tomcat auf Port 80

Post by freddy36 » 2008-04-16 16:31

Es gibt noch authbind womit man irgendwie den Zugriff auf Ports < 1024 erlauben kann. Keine Ahnung wie das genau funktioniert habe nur davon gehört, würde es selbst aber vermutlich nicht nutzen.

Package: authbind
Description: Allows non-root programs to bind() to low ports
This package allows a package to be started as non-root but still bind to low ports, without any changes to the application.

Anonymous

Re: Rootserver mit Tomcat auf Port 80

Post by Anonymous » 2009-02-01 23:41

Authbind und Privbind sind sehr einfach zu bedienen; ich empfehle Authbind. Wie es genau geht, hab ich in meinem Blog beschrieben:

http://linuxchef.blogspot.com/2008/11/tomcat-glassfish-auf-port-80.html

Vom Prinzip her muss man bei Authbind die Datei /etc/authbind/by-port/80 erzeugen, sie dem Tomcat-Benutzer als Besitzer zuweisen und Tomcat mit dem Präfix "authbind --deep" starten.

Anonymous

Re: Rootserver mit Tomcat auf Port 80

Post by Anonymous » 2009-02-01 23:54

oxygen wrote:Um einen Port <1024 zu benutzten muss der Dienst als root User gestartet werden. Das hat übrigens nichts mit Linux zu tun, sondern ist bei so ziemlich jedem OS so.
Tomcat ist ziemlich lahm. Insbesondere viel langsamer bei statischem Content als z.B. Apache oder lighttpd.


Ich dachte es ist sicherer wenn ich den Dienst nicht als root starte. Oder macht das keinen Unterschied?

Ich dachte das mit dem "lahm" wäre nur ein altes und überholtes Vorurteil? Und da es bei mir hauptsächlich nur dynamischen Content gibt, hatte ich mich für den Tomcat Standalone entschieden. Gibt es da irgendwelche Benchmarks?


Das ist korrekt. Mittlerweile gibt es kaum noch Geschwindigkeitsunterschiede zwischen Apache und Tomcat. Von der Sicherheit ist Tomcat natürlich um Längen besser, da Java-Programme keine Buffer-Overflows kennen, die für 80% aller Sicherheitslücken verantwortlich sind und auch regelmäßig den Apache oder eines seiner Module betreffen. Benchmarks gibt es hier:

http://tomcat.apache.org/resources.html

Der Link "So much static" hat nette Grafiken.

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Rootserver mit Tomcat auf Port 80

Post by oxygen » 2009-02-02 08:03

linuxchef wrote:Das ist korrekt. Mittlerweile gibt es kaum noch Geschwindigkeitsunterschiede zwischen Apache und Tomcat. Von der Sicherheit ist Tomcat natürlich um Längen besser, da Java-Programme keine Buffer-Overflows kennen, die für 80% aller Sicherheitslücken verantwortlich sind und auch regelmäßig den Apache oder eines seiner Module betreffen. Benchmarks gibt es hier:

http://tomcat.apache.org/resources.html

Der Link "So much static" hat nette Grafiken.

Und dieser zeigt, dass es deutliche Geschwindigkeitsunterschiede zwischen Tomcat und Apache gibt. Natürlich ist Tomcat kein Totalausfall, aber wenn man die Möglichkeit hat, sollte man zusätzlich einen Apache oder lighttpd (der auch nochmal schneller als Apache ist) laufen lassen.

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Rootserver mit Tomcat auf Port 80

Post by oxygen » 2009-02-02 10:54

matzewe01 wrote:im Regelfall wird immer per mod_proxy / mod_rewrite ein Apache vor den Tomcat gespannt und somit tunlichst der statische vom dynamischen Content getrennt.
Nö, mod_jk2. In diesem thread ging es ja explizit darum, das dies nicht geschehen soll.