2011-09-16 2 views
1

으로 리다이렉트하고 싶습니다. SSL 리다이렉션과 비슷하지만 약간 다른 것을하고 싶습니다.Tomcat (Spring tcServer)을 다른 포트

포트 80 (HTTP) 및 443 (HTTPS)에서 수신 대기하도록 구성된 부하 분산 장치가 있습니다.

부하 분산 장치는 내 인생이 너무 어려울 경우 (Amazon의 Elastic Load Balancer, btw) SSL 리디렉션을 수행 할 능력이 없습니다.

두 개의 포트, 80 및 81 (HTTP 모두)에서 수신 대기하는 Tomcat (tcServer)이 있습니다.

LB의 포트 80은 tomcat의 포트 80으로 연결됩니다. LB의 포트 443은 tomcat (동일한 웹 앱)의 포트 81로 연결됩니다.

tomcat에 포트 80을 설치하면로드 밸런서에서 443으로 되돌아갑니다.

배포 된 webapp를 건드리지 않고도.

아이디어가 있으십니까?

답변

0

한 가지 해결 방법 : 페이지가 포함되지 않은 간단한 웹 프로젝트를 만듭니다. 모든 요청을 https : // 링크가있는로드 밸런서의 절대 URL로 리디렉션하는 404 오류에 대한 간단한 오류 페이지입니다. 그런 다음 Tomcat이 포트 80에서이 응용 프로그램을 사용하도록 구성하십시오 (예 : ROOT.war로 배포). 원래 응용 프로그램을 포트 81에서 제공하십시오.

+0

시간이 충분하지 않다고 생각했습니다. 해결책을 게시 할 예정입니다. 다음에갔습니다. – les2

0

이렇게 분명히 생각한 것입니다. 내가 읽고 있던 일부 포럼을 기반으로). 어쨌든, 여기서 일한 것이 있습니다 (그리고 현재 일하고 있습니다 - 우리는 생산 단계에 있습니다).

  1. 이동이 Tuckey의 URLRewrite 필터를 얻을/WEB-INF에 urlrewrite.xml 추가/및 기본 구성에 넣어/*
  2. 에 web.xml을 먼저 추가합니다.
  3. 응용 프로그램 (로컬 호스트에서)에 히트/다시 쓰기 상태가 제대로 실행되는지 확인하십시오.
  4. 아마존의 X-Forwarded-Proto 헤더를 찾아 해당 값이 "HTTPS"인지 확인하는 규칙을 작성하십시오. 그렇지 않은 경우 https : //로 다시 전달하십시오.

완료되었습니다. 마지막 설정 보이는 같은 :

/WEB-INF/web.xml

<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

/WEB-INF/urlrewrite.xml

<rule match-type="regex"> 
    <condition type="header" operator="notequal" name="X-Forwarded-Proto">^HTTPS$</condition> 
    <from>^.*$</from> 
    <to type="permanent-redirect" last="true">https://%{server-name}%{request-uri}</to> 
</rule> 

당신은 바람둥이 이것에 대한 하나 개의 포트에서 실행이 필요합니다 . URLRewrite를 활성화하는 방법에는 두 가지 옵션이 있습니다.

  1. urlrewrite.xml을 WAR에 직접 포함 할 수 있으며 자동으로 작동합니다. 이 경우 개발 환경을 위해 규칙을 사용하지 않도록 규칙을 추가해야합니다 (port = "80"에 추가 조건을 추가하여 프로덕션 인 포트 80에서 수신 할 때만 다시 쓰기를 가능하게하고 개발은 아마 8080).
  2. URLRewrite를 Tomcat lib 디렉토리에 추가하고 Tomcat 용 기본 web.xml에 필터를 추가 할 수 있습니다.이점은 응용 프로그램을 수정하기 위해 응용 프로그램을 수정할 필요가 없다는 것입니다.
관련 문제