2012-07-28 5 views
0

몇 가지 광범위한 검색을 수행했으며 nginx proxy_pass 질문에 대한 게시물이 많습니다. 나는 진도가 나 빠지면서 그 문제 중 일부에 대한 나의 문제를 수정하려고 노력했다. 그래서 여기에 간다.nginx 다시 쓰기/proxy_pass 문제

나는 PHP 기반 웹 사이트를 레일스로 다시 작성하고있다. 원래 사이트 자체는 양식이있는 단순한 2 페이지입니다. Apache에서 mod_rewrite/mod_proxy 솔루션을 사용하여 양식 게시 이후 사이트가 계속되는 위치의 URL을가립니다.

PHP 사이트에는 3 개의 .htaccess 파일이 들어있는 3 개의 디렉토리가 있습니다. 간단히하기 위해 디렉토리는 a, b, c를 호출 할 수 있습니다. 다음

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^(.*)$ http://www.domainbeingpostedto.com/actual_letter_directory/$1 [P,L] 
</IfModule> 

나는 아파치 전문가가 아니에요하지만 난 확신 [P, L] 각각의 .htaccess 파일의 nginx에 proxy_pass과 동일하고 마지막?

대신 승객과 nginx를 사용하여 레일 CMS로 변환 된 PHP 사이트에 대한이 솔루션을 다시 작성하려고합니다.

레일 앱이 페이지가없는 404를 반환하기 때문에 지금까지 해본 솔루션이 작동하지 않습니다. 따라서 proxy_pass가 게시물 요청을 다른 서버로 전달하지 않습니다. 은 내가 내 nginx.conf 파일이 것은 :

server { 
    listen 80; 
    server_name newtestappdomain.com; 

    location /a/ { 
     proxy_pass http://www.domaintoacceptdatapostandbemasked.com/; 
     #rewrite ^/a/(.*)$ http://www.domaintoacceptdatapostandbemaskedcom/a/ last; 
    } 

    location /b/ { 
     proxy_pass http://www.domaintoacceptdatapostandbemasked.com/; 
     #rewrite ^/b/(.*)$ http://www.domaintoacceptdatapostandbemasked.com/b/ last; 
    } 

    location /c/ { 
     proxy_pass http://www.domaintoacceptdatapostandbemasked.com/; 
     #rewrite ^/c/(.*)$ http://www.domaintoacceptdatapostandbemasked.com/c/ last; 

    } 

    root /home/deploy/testapp/public; # <--- be sure to point to 'public'! 
    passenger_enabled on; 

} 

나는 재 작성 규칙을 주석 처리를 제거하면, 그냥 내가 마스크하기 위해 노력하고있어 다른 사이트에 반사. 내가 확인하기 위해 헤더 추적을 했어. 다른 도메인에 게시물이 보이지 않았습니다. 나는 정말 nginx에 새로운 무엇을 해야할지 모르겠어로 난처한 상황이야. 아파치는 레일과 mod_rewrite/mod_proxy에서 잘 작동하지 않습니다. 어떤 통찰력도 좋을 것입니다.

답변

1
proxy_pass http://www.domaintoacceptdatapostandbemasked.com/; 

이 규칙은 프록시 요청에 "/"위치 (proxy_pass URI에 슬래시) (A /은 B/및 C/손실 될) 것입니다.

그냥 슬래시를 선도하지 않고 URI를 사용하고, 당신이 proxy_pass 전에 재 작성을 사용하여 URI를 변경해야하는 경우가

proxy_pass http://www.domaintoacceptdatapostandbemasked.com; 

완벽하게 작동합니다. 예 :

location /a/ { 
    rewrite /(a/.*)$ /actual_letter_directory/$1 break; # as from you .htaccess example 
} 
+0

후행 슬래시가 문제였습니다. 쉬운 수정, 감사 – toucansam