출처: http://stackoverflow.com/questions/1842885/modifying-headers-with-iis7-application-request-routing
명령 프롬프트(아마도 관리자 모드로)를 열어 아래 명령어를 실행시킨다.
1 |
appcmd.exe set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost |
끝.
기본적으로 preserveHostHeader의 옵션이 False로 되어있어서 그렇다고 한다. True로 하면 의도대로 Host 헤더도 아웃바운드 시에 원하는 주소로 바뀌어진다.
지금 내가 구축한 서버는 아래와 같이 돌아가고 있는데
외부 <-> 윈도우 IIS : 역방향 프록시(11342 포트) <-> VirtualBox 포트포워딩 (Host OS의 11342 포트<-> Guest OS의 80포트) <-> 우분투 웹서버 : 모니위키
http://asdf.com (1) <-> http://서버IP:11342포트 (2) <-> http://*.80 (3)
모니위키의 UserPreference에서 로그인을 하거나 글을 수정하고나서 겪는 페이지 리다이렉트 때 자꾸 페이지의 주소가 (2)번의 형태로 바뀌는 것이었다. 처음엔 모니위키 쪽의 소스코드가 잘못된건가 싶었다. 왜냐면 비슷한 상황을 동아리 서버에 Yobi를 올리면서 겪은 적이 있었으니까. 그 때는 Yobi의 conf 설정 파일에 호스트이름을 적어주는 부분이 있었기 때문에 그걸로 해결했는데 모니위키엔 그런 설정이 없었기 때문이다.
근데 생각해보니 웹서버로 오는 시점엔 이미 80번 포트를 통해 들어오는거니까 위키 쪽에서는 (2)번 주소를 죽을때까지 알지 못할것이란 말이지… 결국 IIS 쪽에서의 역방향 프록시에서 구멍이 뚫린것 같아 정말 몇 시간동안 구글을 찾아다녔다. 혹시나 싶어 Fiddler로 패킷을 확인해보니 리다이렉트하는 시점에서 Host의 주소가 (2)번처럼 바뀌길래 영문 구글에서 “iis url rewrite reverse proxy host header” 요렇게 찾아보니 비슷한 일을 겪은 사람이 역시 있더라. 상황 종료… ㅠ 피곤해…