아무래도 우리가 입주해 있는 건물의 네트웍 문제인 것으로 생각된다.
Tomcat 포트를 80으로 변경해서 Apache를 거치지 않고 통신하도록 테스트도 해보고,
내부라인, 외부라인, 패킷 캡쳐 등 별별 짓을 해서 알았다.

애꿎은 Apache HTTP 서버랑 UTM 장비만 의심을 받고 있었네...

문의를 한 상탠데 언제쯤 해결이 될지는 모르겠다.
그래도 원인이 되는 부분은 알았으니, 이제 시간이 해결해 주겠지 ㅎㅎ

연관글

신고
Posted by 봉보리봉봉
Tomcat에서 out.flush(), response.flushBuffer()가 잘 되는데
Apache + mod_jk 연동시 Apache를 통해서 접근할 때는 flush 기능이 정상적으로 동작되지 않는 문제가 있음.

한참을 찾아서, mod_jk 옵션 문제라는 것을 알았다.

mod_jk 옵션에 다음의 옵션을 추가해야 flush 기능이 정상적으로 동작함.

JkOptions +FlushPackets

헤더까지 바로 전송하고 싶은 경우는
JkOptions +FlushHeader

옵션을 추가해 주면 됨.

아래는 tomcat connector에 나와 있는 옵션의 설명.

JkOptions FlushPackets, you ask mod_jk to flush Apache's connection buffer after each AJP packet chunk received from Tomcat. This option can have a strong performance penalty for Apache and Tomcat as writes are performed more often than would normally be required (ie: at the end of each response).

  JkOptions     +FlushPackets


JkOptions FlushHeader, you ask mod_jk to flush Apache's connection buffer after the response headers have been received from Tomcat.

  JkOptions     +FlushHeader

신고
Posted by 봉보리봉봉
Load Balancing 서버를 구성한 경우 Monitoring Tool에서 각 노드의 서비스 확인을 위해서 지속적으로 접속을 수행하게 된다.
이러한 경우 각 노드에서의 Apache 설정에 로그를 보면, 서비스 확인을 위한 접속까지 모두 로그에 남게 된다. 사실 불필요하고, 용량만 차지하는 로그이므로 로그를 남기지 않는 방법을 사용하는 것이 좋다.

이러한 경우 Apache의 SetEnvIf 옵션을 사용하여 로그를 남기지 않을 수 있다.

SetEnvIf Remote_Addr "IP Address의 정규식 표현" except={name}
CustomLog "logs/domain-access" common env=!except


예를 들면, Control Node의 IP가 10.0.0.1이고, Apache 서비스가 동작하는 Node의 도메인이 s1.bongbong.net이라면,
SetEnvIf Remote_Addr "^10\.0\.0\.1$" except=checkalive
CustomLog "logs/s1.bongbong.net-access" common env=!except


로 설정하면, 클라이언트 10.0.0.1에서 접속하는 경우는 로그 파일에 기록하지 않도록 설정할 수 있다.

SetEnvIf에는 Remote_Addr외에도 Request_URI, Request_Method 등의 여러 변수를 사용할 수 있으며, 사용 가능한 변수는 Apache HTTP 매뉴얼 페이지를 참조하라.

신고
Posted by 봉보리봉봉
뭘까... 왜 브라우저에서 쿠키에 한글 값을 쓰는데 무시가 될까...
언제부터였을까...

이상하게 그런적이 없었는데, 브라우저가 업그레이드 되면서 보안문제가 생긴걸까?

로컬 서버에서 돌아가는 건 이상이 없는데, 도메인 달고 들어가는건 쿠키에 한글 값을 저장하면 빈 값이 들어가네...

뭐 URL Encoding으로 인코딩해서 집어 넣긴했지만, 거참 소리소문없이 안되니 황당하네
신고
Posted by 봉보리봉봉
Windows의 예를 들자면, 기본적으로 설치된 Apache Tomcat(이하 Tomcat)의 document root directory는 다음과 같다.
{tomcat installed directory}/webapp


또 이 하위로는 ROOT와 기타 다른 context들이 존재한다.

다음은 이러한 기본 디렉토리(webapp)를 변경하는 방법이다.
참고로, Tomcat 6.x 버전을 기준으로 기록한다.

설치 디렉토리의 conf 디렉토리 내에 server.xml 파일이 존재하는데 이 파일을 편집기로 연다.
파일의 맨 마지막 부분을 보면 <Host name="localhost" 로 시작하는 부분이 있다.


이 부분을 보면 appBase라는 attribute가 있는데, 이 녀석을 수정해서 기본 application directory를 변경할 수 있다.
위의 그림에서처럼 상대경로를 attribute의 값으로 입력하면, tomcat이 설치된 디렉토리 하위에서 디렉토리를 찾게되는데 이 부분은 절대 경로도 입력가능하다.

또한, Host 하위에 들어갈 수 있는 element로는 Context가 있는데, Context를 설정함으로써 ROOT 컨텍스트나 특정 컨텍스트의 document 경로를 별도로 지정할 수 있다.
docBase attribute에도 appBase attribute 처럼 상대경로와 절대경로 입력을 모두 지원한다.

이 때 주의해야할 점이 있는데, appBase와 하위 context의 docBase의 경로가 같은 경우 docBase 하위의 디렉토리를 context로 인식하여 실행이 제대로 되지 않는다.

그리고 tomcat에서도 Apache Web Server처럼 가상 호스트를 지원하는데, 설정 방법은 위에서 설명한 것과 동일하다. 다만, 가상 호스트를 위한 별도의 <Host> element가 정의되어 있어야 한다.

예를 들면, 다음과 같이 정의되면 된다.

<Host name="bongbong.net" appBase="{directory}" 나머지 부분은 위와 동일...>
    <Alias>www.bongbong.net</Alias>
    <Value className=... (이 부분은 기본 설정 부분을 참조하라. log에 관련된 것임)
</Host>


신고
Posted by 봉보리봉봉
이전버튼 1 이전버튼

블로그 이미지
봉보리봉봉

공지사항

Yesterday33
Today6
Total131,869

티스토리 툴바