Mister_Tobe: Apache 2 interpretiert html nicht

Hey Leute,

ich habe eine Rails Anwendung welche mittels Mongrel ausgeführt wird. Vor Mongrel (Mongrel Cluster) habe ich einen Apache 2 mit einem Load Balancer geschaltet und die httpd.conf entsprechend angepasst, so dass (in meinem Fall) mehrere Anfragen auf 4 Prozesse verteilt werden. Es funktioniert alles super außer, dass die Seiten nicht vom Apache interpretiert werden. Der HTML Code wird lediglich als Text ausgegeben.

Hier ein Ausschnitt meiner httpd.conf:

<Proxy balancer://giscluster>
    # cluster members
    BalancerMember http://127.0.0.1:4000
    BalancerMember http://127.0.0.1:4001
    BalancerMember http://127.0.0.1:4002
    BalancerMember http://127.0.0.1:4003
</Proxy>

ExtendedStatus On
<Location /server-status>
    SetHandler server-status
</Location>

<Location /balancer-manager>
    SetHandler balancer-manager
</Location>

<VirtualHost *:80>
    ServerName gis

ProxyRequests Off

ProxyPass /balancer-manager !
    ProxyPass /server-status !
    ProxyPass / balancer://giscluster/
    ProxyPassReverse / balancer://giscluster/
</VirtualHost>

Wäre toll, wenn Ihr mir helfen könntet!!

Grüße, Tobias

  1. Hallo,

    [...] Es funktioniert alles super außer, dass die Seiten nicht vom Apache interpretiert werden.

    das werden sie nie. Apache liefert die Information nur an den Client (Browser) aus. Interpretieren tut der Browser.

    Der HTML Code wird lediglich als Text ausgegeben.

    Anders gesagt: Dein Browser zeigt den HTML-Quellcode an?
    Dann liefert der Apache möglicherweise nicht den geeigneten Header. HTML-Ressourcen sollten mit dem Content-Type "text/html" ausgeliefert werden. Ich weiß allerdings nicht, wie das im Zusammenspiel mit der Proxy/Load-Balancer-Geschichte funktioniert. Da sind vermutlich die Server "dahinter" schon dafür zuständig, die richtigen HTTP-Header zu liefern.

    Hier ein Ausschnitt meiner httpd.conf:

    ... der mit dem beschriebenen Phänomen gar nichts zu tun hat.
    Eventuell liegt das eigentliche Problem schon in der Konfiguration der Server im Backend.

    So long,
     Martin

    --
    Ein Patriot ist jemand, der bereit ist, sein Land gegen seine Regierung zu verteidigen.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hey,

      vielen Dank für die schnelle Antwort.
      Ich wundere mich eben, da wenn ich die einzelnen 4 Prozesse des Servers (welche am localhost auf Port 4000-4003 lauschen) direkt über die URL (z.B. http://localhost:4000) aufrufe, dann bekomme ich die Seite wunderbar angezeigt. Wenn diese aber über den Apache 2 vom Load Balancer aufgerufen werden, dann wird das HTML plain im Browser angezeigt.

      Hat jemand vielleicht eine Idee was das Problem sein könnte?

      Greetz, Tobi

      1. Hallo,

        Ich wundere mich eben, da wenn ich die einzelnen 4 Prozesse des Servers (welche am localhost auf Port 4000-4003 lauschen) direkt über die URL (z.B. http://localhost:4000) aufrufe, dann bekomme ich die Seite wunderbar angezeigt. Wenn diese aber über den Apache 2 vom Load Balancer aufgerufen werden, dann wird das HTML plain im Browser angezeigt.

        und worin unterscheiden sich die Ressourcen dann genau? Welche Header werden im Fall 1. oder 2. gesendet? Ich vermute, wenn sobald man den genauen Unterschied kennt, tut man sich leichter, die Ursache zu finden.

        Ciao,
         Martin

        --
        Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Du hast recht, wenn ich die 4 Prozesse direkt anspreche, dann kommt der vollständige Header und die Seite wird korrekt angezeigt. Wenn ich allerdings über den Apache darauf zugreifen, dann sieht das wie folgt aus:

          <html>
          <head></head>
          <body>
           ... (hier steht dann der header und der rest der eigentlichen Seite)
          </body>
          </html>

          Komischerweise wird also um die eigentliche Seite ein

          <html>
          <head></head>
          <body>
           Eigentliche Seite
          </body>
          </html>

          gepackt. Das macht mich doch etwas stutzig wie soetwas funktioniert ... :(
          HELPPPP...

          Grüße, Tobi

          1. Hi,

            Du hast recht, wenn ich die 4 Prozesse direkt anspreche, dann kommt der vollständige Header und die Seite wird korrekt angezeigt. Wenn ich allerdings über den Apache darauf zugreifen, dann sieht das wie folgt aus:

            Und wie sehen jetzt die HTTP-Header aus?

            HELPPPP...

            Vielleicht solltest Du Deine Server von jemandem konfigurieren lassen, dem der Unterschied zwischen HTTP-Header, dem HTML-Element head und dem Kopf einer dargestellten HTML-Seite klar ist.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.