2014-04-18 3 views
0

내 사이트 (방문자가 볼 수 있음)의 유지 관리 페이지를 설정하고 싶지만 devs에게도 사이트에 액세스하고 테스트 할 수있는 방법을 허용하려고합니다. 마지막 비트, devs에 대한 액세스, 프로젝트 관리자의 요청입니다 ... 우리가 준비 서버에서 테스트해야 할 것 같아서이 작업을 수행하는 가장 좋은 방법은 아닌지).nginx 기반 nodejs 사이트 유지 관리 페이지

사이트는 nodejs 기반이며 proxy_pass를 통해 nginx 서버에서 실행됩니다.

내가 아파치에서이 방법을 사용했다면, get param을 전달하면 dev가 유지 보수 페이지로 리디렉션되는 것을 막을 수 있습니다. proxy_pass를 사용하여 nginx에서이 작업을 수행하는 방법을 알아낼 수 없습니다.

유지 관리 페이지로 리디렉션하기 위해 모든 것을 가져올 수 있었지만 이미지와 CSS가 손상되어로드되지 않았습니다. 또한 GET 매개 변수 재정의를 구현할 수 없습니다.

이 접근 방법에 대한 제안 사항은 무엇입니까? 웹에 관한 다양한 자습서와 여기에 대한 의견은 제대로 작동하지 않는 것 같아서 proxy_pass 사용법과 관련이 있다고 생각합니다. 분명하지 않은.


* 편집 : 나는 방문자가 "/ 유지 보수"내 유지 보수 페이지 대신 서버 오류가로 리디렉션으로 돌아가 셨습니다 구현하는 this post on SO하지만 내 시도를 보았다. 또한 리디렉션 재정의를 처리하지 않습니다.

답변

1

이것은 사용자를 필터링하는 방법에 대한 질문입니다. IP 주소, 쿠키 또는 기타 요청 측면에서 액세스를 필터링 할 수 있다면 if 지시문을 사용하여 다른 모든 사용자를 유지 관리 페이지로 리디렉션하거나 다시 쓸 수 있습니다.

server { 
    if ($arg_secret != "123456") { 
     rewrite ^(.*)$ /maintenance$1 break; 
    } 
    location /maintenance { 
     #root directive etc 
    } 
    location/{ 
     #proxy_pass directive etc 
    } 
} 

을 아니면 조건이 true 인을위한 조건 및 구성, 만 proxy_pass을 반전 할 수 :이 조건이 (documented here$arg_PARAMETER를 사용하여) 그 예 것이다 - 당신은 GET 매개 변수를 사용하여 말할 것도. 그러나``if` 지시문은 문제가 될 수 있으므로 (http://wiki.nginx.org/IfIsEvil 참조) 배포하기 전에 시도하십시오.

이미지 및 CSS가로드되지 않는 문제에서 리디렉션 규칙의 영향을 받기 쉽기 때문에 이러한 유지 관리 리소스가 항상 제공되어야합니다. 예를 들어 location 지시문은 다음과 같을 수 있습니다.

location ~ /(.*\.css|.*\.jpg) { 
    root /var/www/maintenance; 
} 
관련 문제