#IBM HTTPServer

[WebSphere] WEB/WAS 정적(Static) 및 동적(Dynamic) 컨텐츠 분리 처리 전략

웹 시스템 성능 최적화를 위해 이미지, 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>

적용 절차

  1. 설정 파일 수정 (fileServingEnabled="false")
  2. WAS 관리 콘솔에서 플러그인 재생성 (Generate Plug-in)
  3. 재생성된 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.xmlName="*" 와 같은 설정이 있다면 모든 요청이 WAS로 넘어갑니다. 성능 저하의 주원인이므로 삭제해야 합니다.
  • 동기화: fileServingEnabled 옵션을 변경했다면 반드시 플러그인을 재생성 및 전파하고 웹 서버를 재기동(Restart) 해야 적용됩니다.
  • 배포 전략: 정적/동적 분리 구성 시, 개발팀은 정적 리소스(이미지 등)를 WAS 배포 패키지(WAR/EAR)와 별도로 웹 서버 경로에 배포하는 프로세스를 수립해야 합니다.

Next Step:
구성이 완료되었다면 브라우저 개발자 도구(F12)의 Network 탭을 통해 정적 파일 요청 시 Response HeaderServer: IBM_HTTP_Server가 찍히는지(WAS 정보가 아닌지) 확인하여 분리 처리가 정상적인지 검증해보십시오.