태그 글 보관함: 아파치2

아파치 웹컨텐츠 압축 mod_deflate 설정과 mime type 알아보기

우분투 서버 14.04 LTS 에서 설치한 아파치 Apache/2.4.7 는 웹컨텐츠를 압축하기 위해서 mod_deflate 를 사용한다. 기본적으로 활성화 되어 있고, 웹에서 사용하는 일반적인 파일들은 미리 정의가 되어 있기 때문에 그냥 쓰는 일이 많지만, 웹컨텐츠 중에서 좀 특수한 파일이 있을 경우에는 압축이 되지 않는 경우가 있다.

나 같은 경우에는 워드프레스 젯팩을 설치했는데 그 안에 Genericons.svg 라는 파일이 압축이 되고 있지 않았다. 이 파일은 텍스트 파일로 78Kb 나 되는 사이즈를 가지고 있다.
이 사실은 구글의 PageSpeed Insights 에서 알게 되었다. 운영중인 사이트/블로그의 속도를 개선하기 위해서 쓰면 좋을듯하니 이용해보자.

Genericons.svg 파일이 압축되고 있지 않다.
Genericons.svg 파일이 압축되고 있지 않다.

각설하고, svg 라는 확장자를 가진 이 파일을 아파치에서 압축하는 방법을 알아보자.

deflate.conf 파일 수정

위에서 아파치에서 압축은 mod_deflate 을 사용한다고 했다. 이 모듈의 설정 파일은 deflate.conf 이고 이 파일은 /etc/apache2/mods-enabled 에 있다. 열어서 수정하도록 하자.

파일을 열어보면

이렇게 mime type 로 압축 송신할 파일들을 정의해 둔 것을 볼 수 있다.

svg 파일의 mime type 을 알아보기 위해서는 아래 파일을 참조하자.

vi 에서 / 키로 검색 모드로 들어가서 svg 를 입력하면 아래와 같이 mime type 이 image/svg+xml 이라는 것을 확인할 수 있다.

다시 deflate.conf 파일로 돌아가서 아래와 같이 압축할 파일의 정의를 추가한다.

설정을 적용시키기 위해서는 아파치 재기동이 필요하다.

PageSpeed Insights 에서 다시 확인한 결과 압축이 적용되어 압축 사용 항목이 통과 되어 있다.

압축 사용에 문제 없음!
압축 사용에 문제 없음!

아파치-톰캣 mod_jk 연동시 에러 문제 해결

아파치와 톰캣을 mod_jk로 연동했을 때 나오는 에러 메시지를 없애는 방법.
톰캣 연동 자체에는 문제가 없기 때문에 고치지 않아도 되는 문제지만, mod_jk.log에 계속 에러가 뜨고 있어서 신경 쓰이기 때문에 찾아봤다.

원인은 jk-manager와 jk-status라는 mod_jk관리와 상태를 표시해주는 웹모듈이 활성화 되어있어서 그런듯한데 그런거 안쓰기 때문에 그냥 주석처리로 해결했다.

에러 메시지 내용

[error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name 'jk-manager' in uri map post processing.
[error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name 'jk-status' in uri map post processing.

/etc/apache2/mods-available/jk.conf 파일을 열어서 아래 부분을 찾아서 주석처리한다.

    <Location /jk-status>
        # Inside Location we can omit the URL in JkMount
        JkMount jk-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
    <Location /jk-manager>
        # Inside Location we can omit the URL in JkMount
        JkMount jk-manager
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>

주석처리 후

#    <Location /jk-status>
#        # Inside Location we can omit the URL in JkMount
#        JkMount jk-status
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.1
#    </Location>
#    <Location /jk-manager>
#        # Inside Location we can omit the URL in JkMount
#        JkMount jk-manager
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.1
#    </Location>

아파치 모듈이니까 아파치를 리로드하거나 재기동 해야지 적용될듯하다.