2016-07-13 2 views
1

URL www.example1.com에 대해 아마존 ec2에서 내 nginx를 구성했습니다. 브라우저에서 URL을 변경하지 않고 bluehost (파쇄 호스팅)에서 호스팅되는 www.example2.com/blog에서 블로깅 호스트 www.example1.com/blog에 프록시를 전달해야합니다. 가능한가? 외부 URL에 nginx 프록시 전달

나는 운이없이

 location /blog{ 
      proxy_pass http://www.example2.com; 
      proxy_set_header Host $http_host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

}

같은 다양한 조합을 시도했다.

공유 호스트가 ip가 아니라 도메인 이름을 인식 할 수 없기 때문에 nginx가 실패한 이유 대신 도메인에 IP로 매핑하려고한다는 것을 로그에서 볼 수 있습니다.

모든 입력/도움은 정말 감사하겠습니다.

+1

''proxy_set_header 호스트 $ http_host;''를''proxy_set_header 호스트 $ proxy_host;'' – Lution

+0

으로 변경해보십시오. 정말 고마워요! 그것은 완벽하게 작동합니다! 이 문제와 관련된 다른 질문을 할 수 있는지 확실하지 않습니다. http : // example1.com을 작성할 때 리디렉션되지 않지만 http : // www.example1.com 및 www.example1.com에서 리디렉션됩니다. 그렇게 할 수 없다면 사과드립니다. –

답변

1

여기 내 대답을 알려 드리겠습니다.

당신이 만나는 문제는 proxy_set_header Host $http_host;의 $ http_host가 원래 요청 헤더에서 호스트를 사용하기 때문에 발생하지만 실제로 필요한 것은 www.example2.com의 호스트입니다. $ proxy_host는 proxy_pass 지시문에서 호스트를 사용합니다. 바닥 http://nginx.org/en/docs/http/ngx_http_proxy_module.html

$ proxy_host

이름과 proxy_pass 지시어에 지정된대로 프록시 서버의 포트 내장 변수를 참조; 당신이 server_name 지시어의 값 example1.com을 두지 않았기 때문에

는 그리고 그것이 내가 생각 example1.com하지만 www.example1.com을 위해 작동하지 않는 이유입니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 나는 같은 서버에 example1.com을 작성하려고 시도했다. server_name example1.com www.example1.com; 그러나 www.example1.com은 www.example2.com에서 콘텐츠를 가져옵니다. 그러나 http : // example1.com은 여전히 ​​원본 콘텐츠를 제공합니다. –

+0

@AmrishPatel 전체 서버 블록 붙여 넣기 – Lution