웹 시스템 성능 최적화를 위해 이미지, CSS, JS 등 정적 리소스는 Web Server(IHS)가 처리하고, JSP, Servlet 등 동적 리소스는 WAS가 처리하도록 역할을 분리하는 방법을 정리합니다.
plugin-cfg.xml제어 방식과 WAS의fileServingEnabled옵션 사용법을 다룹니다.
Test Environment
- OS: CentOS 7.2
- Web Server: IBM HTTP Server v8.5
- WAS: WebSphere Application Server v8.5
1. 개요 및 목적
기본적으로 WebSphere 플러그인은 모든 요청을 WAS로 전달하도록 구성될 수 있습니다. 하지만 정적 파일(*.jpg, *.css 등)까지 WAS가 처리하게 되면 컨테이너의 스레드 자원을 낭비하게 됩니다. 따라서 이를 분리하여 시스템 효율성을 높여야 합니다.
2. Method 1: Plugin-cfg.xml 수동 제어
가장 직관적인 방법은 웹 서버 플러그인 설정 파일(plugin-cfg.xml)에서 WAS로 넘길 요청의 패턴(URI)을 강제로 지정하는 것입니다.
설정 파일 수정
- 파일 위치:
[IHS_ROOT]/Plugins/config/[WebServerName]/plugin-cfg.xml - 수정 내용:
UriGroup내에서 WAS가 처리해야 할 확장자만 남기고 나머지는 제거하거나 주석 처리합니다.
<UriGroup Name="default_host_server1_root-PCNode01_Cluster_URIs">
<!-- WAS가 처리할 동적 컨텐츠만 명시 -->
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.do"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/servlet/*"/>
</UriGroup>
위와 같이 설정하면 명시되지 않은 이미지나 HTML 파일 등은 플러그인을 타지 않고 웹 서버(IHS)가 자신의 DocumentRoot 또는 Alias 경로에서 파일을 찾아 처리합니다.
3. Method 2: WAS fileServingEnabled 옵션 사용
WebSphere 애플리케이션 배포 설정에서 정적 파일 서빙 기능을 비활성화(False)하여, 플러그인 생성 시 정적 파일에 대한 URI 매핑을 자동으로 제외하는 방법입니다.
설정 파일 위치 및 수정
애플리케이션의 WEB-INF 디렉터리에 있는 확장 설정 파일을 수정합니다.
- 경로 예시:
[Profile_Root]/installedApps/[CellName]/[AppName].ear/[WarName].war/WEB-INF/
1) ibm-web-ext.xmi (구버전 스타일)
<webappext:WebAppExtension ... fileServingEnabled="false" ...>
</webappext:WebAppExtension>
2) ibm-web-ext.xml (WAS v7.0 이상 권장)
<web-ext xmlns="http://websphere.ibm.com/xml/ns/javaee/web-ext/1.0" ...>
<!-- 정적 파일 서빙 비활성화 -->
<enable-file-serving value="false"/>
</web-ext>
적용 절차
- 설정 파일 수정 (
fileServingEnabled="false") - WAS 관리 콘솔에서 플러그인 재생성 (Generate Plug-in)
- 재생성된
plugin-cfg.xml을 웹 서버로 전파 (Propagate)
이 과정을 거치면 plugin-cfg.xml 내에 정적 파일(*.html, *.jpg 등)에 대한 URI 정의가 자동으로 삭제됩니다.
4. WebServer (IHS) Alias 설정
WAS로 요청이 넘어가지 않는 정적 파일들을 웹 서버가 찾아서 제공할 수 있도록 물리적 경로를 매핑해야 합니다.
httpd.conf 설정
- 파일 위치:
[IHS_ROOT]/conf/httpd.conf - 설정 예시: URL의
/images요청을 실제 서버의/home/images디렉터리로 연결
# 정적 리소스 경로 매핑
Alias /images /home/images
<Directory "/home/images">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
5. 요약 및 주의사항
- Full URI 패턴 주의:
plugin-cfg.xml에Name="*"와 같은 설정이 있다면 모든 요청이 WAS로 넘어갑니다. 성능 저하의 주원인이므로 삭제해야 합니다. - 동기화:
fileServingEnabled옵션을 변경했다면 반드시 플러그인을 재생성 및 전파하고 웹 서버를 재기동(Restart) 해야 적용됩니다. - 배포 전략: 정적/동적 분리 구성 시, 개발팀은 정적 리소스(이미지 등)를 WAS 배포 패키지(WAR/EAR)와 별도로 웹 서버 경로에 배포하는 프로세스를 수립해야 합니다.
Next Step:
구성이 완료되었다면 브라우저 개발자 도구(F12)의 Network 탭을 통해 정적 파일 요청 시 Response Header에 Server: IBM_HTTP_Server가 찍히는지(WAS 정보가 아닌지) 확인하여 분리 처리가 정상적인지 검증해보십시오.