2010-12-01 4 views
5

나는 여러 필터 매개 변수, 같은 소요 웹 서비스를 :의 nginx : URL을 더블 슬래시를 유지하는 방법

까다로운 일이 종종 필터 변수의 일부입니다
http://mydomain.com/filter1/value1/filter2/value2/filter3/value3 

있습니다 결석 등이 수와 같은 URL을 너무 이 서비스에 전달하십시오 :

http://mydomain.com/filter1//filter2//filter3/value3 

이제 이중 슬래시를 유지하려면 내 nginx (또는 fastcgi)를 구성해야합니다. 현재 이중 슬래시를 단일 슬래시로 대체하고 있습니다. 나는 nginx & fastcgi 구성에 익숙하지 않으며 어떻게해야할지 모르겠다. 나는 두 번째 URL을 요청했을 때 PHP 스크립트에서 request_uri를 캡처했습니다.

http://mydomain.com/filter1/filter2/filter3/value3 

Plz Help me. 미리 감사드립니다.

+1

죄송합니다. 질문이 ServerFault.com에 더 적합 할 수 있습니다. 아무에게도 전송할 수 있습니까? – Shawn

+0

DONT FORGET을 사용하여 proxy_pass'es에서 후행 슬래시를 제거하십시오! 그렇지 않으면 작동하지 않습니다 (nginx 1.8.1). – outluch

답변

14
syntax: merge_slashes [on|off] 
default: merge_slashes on 
context: http, server 

다음을 사용해야합니다. merge_slashes off;

+0

Thx. 그러나 어디에서 문서를 찾았습니까? 당신은 내게 링크 PLZ 줄래? 나는 "nginx merge_slashes"를 googled하지만 문서에 아무것도 얻지 못했습니다. – Shawn

+0

제 모국어는 러시아어입니다. 따라서 여기에서 그것을 발견했습니다 : http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html – CyberDem0n

+0

그리고 방금 시도했지만 작동하지 않는 것 같습니다. merge_slashes를 해제했습니다. 내부 서버 {...} – Shawn

4

nginx + passenger (Ruby on Rails/Rack/등)와 비슷한 문제가 있었는데, 기본적으로 여러 슬래시가 붕괴되었습니다 (PATH_INFOREQUEST_URI 모두).

nginx 구성의 server 컨텍스트에 merge_slashes off;을 추가하면 수정되었습니다 (이제는 여러 개의 슬래시가 올바르게 표시됨).

1

또한 proxy_pass 행에 슬래시가 없어야합니다.

  • 좋은 : proxy_pass http://localhost:3000;

  • 배드 : proxy_pass http://localhost:3000/;

+0

와우, 실수로 내 대답을 보았고 호기심으로 인해 내 proxy_pass에 슬래시가 발생하지 않았습니다. 그리고 그것은 일했습니다! 그것은 처음에 명백하게 대답해야합니다. 그 대답에 대한 의견 섹션에 추가 – outluch

0

이전 답변에 따르면 해결책은 Nginx 구성에서 merge_slashes off;을 사용하는 것입니다. 그러나 가상 호스트를 사용하는 경우 첫 번째 호스트에 가상 호스트를 포함해야합니다. 이것이 v1.4.1 및 v1.4.6의 경우입니다.

관련 문제