2012-11-10 3 views
0

저는 nginx를 처음 사용하며 리디렉션 문제를 파악하려고합니다. 웹 응용 프로그램을 실행하는 호스트에서 다른 도메인으로 웹 사이트를 리디렉션하려고합니다. 내가 한 부분이지만 그것을 가리고 싶습니다. 리디렉션 할 때 사용자가 다른 도메인으로 갔음을 알리는 것을 원하지 않습니다.nginx 리디렉션 마스크

나는 내 클라이언트의 개인 정보 보호를 위해 도메인 이름을 대체했습니다. 하지만 그들은 test.com의 Linode에서 sub.test.com에있는 웹 응용 프로그램을 실행하고 있습니다. 내가 원하는 것은 test.com을 방문하는 모든 사용자가 other.com에서 호스팅되는 임시 사이트로 리다이렉트되지만 도메인을 공개하지 않는 것입니다.

이전에 누군가가 나에게 그 방법을 알려주었지만 오래 전이었고 더 이상 참조 할 정보가 없습니다. 누군가 나를 도울 수 있습니까? 나는 테스트 환경의 도메인을 드러내고 싶지 않다. 그런 다음 사용자가 볼 수있는 도메인 이름을 변경하지 리디렉션하려면 다음과 같이

server { 
    listen  80; 
    server_name www.test.com test.com www.test.net test.net; 

    rewrite ^http://other.com/sub redirect; 

    location/{ 
     root  /srv/http/www.test.com; 
     index index.html; 
    } 
} 
+0

에 오신 것을 환영합니다 :

이 수행 할 수 있습니다! 태그는 키워드가 아닙니다. 게시물에있는 동일한 단어로 태그 ​​목록을 채우는 것은 태그 목록을 분류하는 데 도움이되지 않습니다. 태그도 혼자 서 있습니다. 즉,'web'와'server'를 조합한다고해서 웹 서버에 관해 말하는 것이 아닙니다. 태그를주의해서 선택하십시오. – Charles

답변

0

당신이 당신의 재 작성을 변경하여 (302)에 301에서 변경해야합니다

rewrite^http://other.com/sub redirect; 
+0

리디렉션 요청이 너무 많다는 오류가 발생했습니다. 어떤 아이디어? –

+0

정확한 오류는 무엇입니까? 어떤 종류의 리디렉션 루프에서 끝나고있는 것처럼 들리지만, 당황한 다른 서버로 리디렉션하고 있기 때문입니다. – cobaco

+0

btw 다른 서버에 모든 것을 ('^'regex는 모든 것을 일치시키는) 모든 것을 다시 쓰고 있기 때문에'location /'-block을 완전히 제거 할 필요가 없습니다. – cobaco

2

할 수 있습니다 ' 리디렉션으로 리디렉션하면 실제로 리디렉션은 브라우저에서 페이지를 가져올 위치를 알려주는 것과 같으므로 실제 위치를 가릴 수 없습니다. 내가 원하는 것은 프록시입니다. 클라이언트가 서버 (test.com)의 일부 문서를 요청하면 서버가 다른 서버 (other.com)에서 문서를 가져 와서 test.com에서 생성 된 것처럼 문서를 클라이언트에 반환합니다. 클라이언트는 실제로 문서가 어디에서 왔는지를 결정할 수 없습니다. 스택 오버플로

server_name test.com; 
location/{ 
    proxy_pass http://other.com; 
} 
관련 문제