Apache ProxyPass zu Rack gibt 404-Fehler aus

Apache ProxyPass zu Rack gibt 404-Fehler aus

(der Einfachheit halber habe ich die IPs des Apache-Servers auf 1.1.1.1 und die des Gollum-Servers auf 6.6.6.6 geändert)

Ich versuche, eineGollumWiki mit Rack über Apache (da SSL richtig eingerichtet ist und ich derzeit nur das Gollum-Wiki teste). Also habe ich Apache auf ProxyPass eingerichtet (Konfiguration unten).

Das Problem besteht darin, dass der Rack-Server einwandfrei zu funktionieren scheint, wenn ich von meinem Proxy-Rechner aus direkt über einen Curl darauf zugreife:

1.1.1.1 - - [05/Dec/2013 06:20:25] "GET /docs/Home HTTP/1.1" 200 6467 0.2135

aber ich bekomme eine 404-Fehlermeldung, wenn ich versuche, meinen Browser zu verwenden. Rackup sagt:

6.6.6.6 - - [05/Dec/2013 06:20:00] "GET /docs/Home HTTP/1.1" 404 - 0.0006

Absurderweise, wenn ich diegenaudieselben Header, die mein Browser sendet (siehe unten) per Telnet vom Proxy-Rechner (1.1.1.1). Die Anfrage ist erfolgreich:

6.6.6.6 - - [05/Dec/2013 06:19:19] "GET /docs/Home HTTP/1.1" 200 6467 0.2759

Ich habe keine Ahnung, was ich falsch mache und warum (und wie?!) Rack zwischen zwei unterschiedlichen Anfragen von derselben Maschine unterscheidet. Helfen Sie mir bitte?

(Verwende Apache/2.2.15 auf RHEL 5 und Rack 1.2 (Release: 1.5) auf Ruby 1.9.2p320, RHEL 6)

BEARBEITENAnscheinend ist das ein Problem mit WEBrick, denn als ich zu Thin gewechselt bin, hat es funktioniert. Würde mich trotzdem über Ihre Erkenntnisse freuen ...


Apache-Konfiguration:

<VirtualHost 1.1.1.1:80>

    ServerName testserver.example.org
    ServerAlias testserver.example.org
    ServerAdmin [email protected]

    DocumentRoot /path/to/my/docs
    DirectoryIndex index.html index.htm index.php

    # ...

    <Location /docs/>
        ProxyPass http://6.6.6.6:8080/docs/

        # also tried:
        # ProxyPass http://rackserver.example.org:8080/docs/

        # and:
        # SetEnv force-proxy-request-1.0 1
        # SetEnv proxy-nokeepalive 1

    </Location>

</VirtualHost>

Telnet-Anfrage:

<1>root@testserver:~$ telnet rackserver.example.org 8080
Trying 6.6.6.6...
Connected to rackserver.example.org.
Escape character is '^]'.
GET /docs/Home HTTP/1.1
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
ACCEPT_ENCODING: gzip,deflate,sdch
ACCEPT_LANGUAGE: en-US,en;q=0.8,he;q=0.6
CACHE_CONTROL: max-age=0
COOKIE: SESS...; has_js=1
HOST: rackserver.example.org:8080
USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
VERSION: HTTP/1.1
X_FORWARDED_FOR: 6.6.6.6
X_FORWARDED_HOST: apacheserver.example.org
X_FORWARDED_SERVER: testserver.example.org

Ich habe überprüft, dass das Rackup für die normale Browser-Anfrage und die Telnet-Anfrage die gleiche Ausgabe druckt, indem ichder Code aus dieser Antwort.

verwandte Informationen