2012-07-11 8 views
1

이것은 이상한 문제입니다. 코드가 올바르게 렌더링되지 않는 사이트가 있습니다. 그것은 Tomcat 5.0.27-2 서버 (나는 알고있다 ... old)와 Apache 2.0.46-77 서버이다. 현재 허용되는 것보다 더 큰 변화이므로 즉시 업그레이드 할 수 없습니다.JSP 뒤에 소스 코드 표시

어쨌든, 여기에 일어나는 내용은 다음과 같습니다

Go to https://mysite.com/mysite and the JSP renders correctly 
Go to https://www.mysite.com/mysite and the RAW JSP is displayed, no rendering 
Go to https://1.2.3.4/mysite and you get the TomCat welcome page. 

내가 잘못된 IP URL을 게시 할 수 없습니다와 같은 코드 블록을 사용했다.

나는 그것이 구성 설정이지만, 그것이 무엇이 될 수 있는지 모르겠습니다. 우리가 발급 한 SSL이 www.mysite.com이 아닌 mysite.com에 대한 것이었지만 그 원인이 무엇인지 생각하지 않습니다. 대신 모든 트래픽 (www.mysite.com 및 IP)을 mysite.com으로 리디렉션 할 수 있다면 기쁠 것입니다.

나는 httpd.conf 파일을 보았다. 다음과 같이

<VirtualHost 1.2.3.4:80> 
ServerName mysite.com 
DocumentRoot /mysite_root/ROOT 
ServerAdmin [email protected] 
<Location "/*.jsp"> 
    JkUriSet worker ajp13:localhost:8009 
</Location> 
<Location "/*/*.jsp"> 
    JkUriSet worker ajp13:localhost:8009 
</Location> 
<Location "/*/*/*/*/*/*.jsp"> 
    JkUriSet worker ajp13:localhost:8009 
</Location> 
    RewriteEngine on 
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) 
    RewriteRule .* - [F] 
</VirtualHost> 

내가 파일을 업데이트 한 :

을 httpd.conf

<VirtualHost 1.2.3.4:80> 
ServerName mysite.com 
DocumentRoot /mysite_root/ROOT 
ServerAdmin [email protected] 
JkMount /*.jsp worker1 
JkMount /servlet/* worker1 
RewriteCond %{HTTP_HOST} ^www.mysite.com [nocase] 
RewriteRule ^(.*)   https://www.mysite.com/$1 [last,redirect=301] 
</VirtualHost>  

ssl.conf

<VirtualHost 1.2.3.4:443> 
ServerName mysite.com 
DocumentRoot /mysite_root/ROOT 
ServerAdmin [email protected] 
JkMount /*.jsp worker1 
JkMount /servlet/* worker1 
RewriteCond %{HTTP_HOST} ^www.mysite.com [nocase] 
RewriteRule ^(.*)   https://www.mysite.com/$1 [last,redirect=301] 
</VirtualHost>  

또한 mod_jk 나는 현재 상기에서 VirtualHost에서 다음 있습니다. conf

내가 아파치를 다시 시작하면 923,979,393,210

workers.properties

worker.list=worker1 

worker.worker1.type=ajp13 
worker.worker1.host=localhost 
work.worker1.port=8009 

은 오류가없는 그리고 당신은 당신의 JkMount 지시가 <VirtualHost> 모두에 중복되어 있는지 확인하는 데 필요한 JAVA_HOME과 CATALINA_HOME

+0

[Biolerplate] (https://github.com/h5bp/html5-boilerplate/blob/master/.htaccess#L361)는 URL 재 작성 방법을 잘 보여줍니다. – Andrew

답변

1

을 본다 섹션은 httpd.conf입니다. 경우 중 하나에 JkMount이 없으면 Apache httpd가 대신 요청을 처리합니다.

문제는 또한 사용자가 웹 응용 프로그램의 docBase에 대한 URI를 Alias으로 지정했음을 나타냅니다. 원격 클라이언트가 /META-INF/context.xml 또는 /WEB-INF/web.xml과 같은 것을 요청하고 웹 응용 프로그램 (데이터베이스 자격 증명 등)에 대한 모든 유용한 정보를 얻을 수 있으므로이 방법은 권장되지 않습니다.

또한 톰캣 5.0은 매우 고통스럽게 시대에 뒤쳐져있어 실제로 프로그램을 시작해야합니다.

+0

httpd.conf 파일에 별칭이 없습니다. Server.xml 파일의 Service 섹션에있는 여러 호스트 아래에 나열되어 있습니다. 너 무슨 소리 야? 위에서 볼 수 있듯이 JkMounts는 없으며 Locations 및 JkUriSet 명령 만 있습니다. – SpaceCowboy74

+0

'JkURISet'을 사용 하시겠습니까? 어쨌든, 당신은'VirtualHost' 섹션 모두에서 그 지시어를 복제해야합니다. 그렇지 않으면 Apache httpd는 Tomcat에 요청을 프록시하도록 알지 못하기 때문입니다. 원시 JSP 코드를 얻는다면 Tomcat은 거의 확실히 요청을받지 못한다. 이것은 httpd가 제공한다. –

+0

사실, httpd.conf에서 JkMount /*.jsp ajp13을 명령으로 사용하려고했습니다. 잘못된 값이라는 오류가 있습니다. (나는 망할 서버를 업그레이드 할 수 있으면 좋겠다.)또한 https의 RewriteCondition을 켜고 host_name은 www.mysite.com이고 https://mysite.com/$1을 가리키는 규칙을 다시 작성했습니다. 위의 기존 조건 및 규칙을 적용하여 작성했습니다. 나는 가상 호스트 외부에서 그것을 시도했다. 원시 JSP를 텍스트로 보여주었습니다 (HTML 렌더링이 전혀 없음). – SpaceCowboy74