Apache ProxyPass to Rack에서 404 오류 발생

Apache ProxyPass to Rack에서 404 오류 발생

(단순화를 위해 Apache 서버의 IP를 1.1.1.1로 변경하고 Gollum 서버의 IP를 6.6.6.6으로 변경했습니다.)

나는 봉사하려고 노력하고있다골룸Apache를 통한 랙이 있는 wiki(SSL이 제대로 설정되어 있고 현재 Gollum wiki만 테스트 중이기 때문입니다). 그래서 Apache를 ProxyPass로 설정했습니다(아래 구성).

문제는 프록시 시스템에서 컬을 통해 직접 액세스할 때 랙 서버가 제대로 작동하는 것 같다는 것입니다.

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

하지만 브라우저를 사용하려고 할 때마다 404가 발생합니다. 랙업은 이렇게 말합니다.

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

이상하게도 내가 사용할 때정확한내 브라우저가 프록시 시스템(1.1.1.1)에서 텔넷을 통해 전송하는 것과 동일한 헤더(아래 참조)가 요청에 성공했습니다.

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

나는 내가 뭘 잘못하고 있는지, 왜 (그리고 어떻게?!) 랙이 동일한 시스템의 두 가지 다른 요청을 구별하는지 전혀 모릅니다. 도와주세요?

(RHEL 5에서는 Apache/2.2.15를 사용하고 Ruby 1.9.2p320, RHEL 6에서는 Rack 1.2(릴리스: 1.5) 사용)

편집하다분명히 이것은 WEBrick의 문제입니다. Thin으로 전환했을 때 작동했기 때문입니다. 여전히 귀하의 통찰력을 원합니다...


아파치 구성:

<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>

텔넷 요청:

<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

랙업이 다음을 사용하여 일반 브라우저 요청과 텔넷 요청에 대해 동일한 출력을 인쇄하는지 확인했습니다.이 답변의 코드.

관련 정보