『비전공자도 이해할 수 있는 챗GPT』,
『비전공자도 이해할 수 있는 AI 지식』
10만 베스트셀러를 기록한
세상에서 가장 이해하기 쉬운 챗GPT 교양서

HOME » mod_url_replace: URL 변환 아파치 모듈

mod_url_replace: URL 변환 아파치 모듈

오래된 URL을 신규 URL로 자동으로 변환해주는 아파치 모듈을 만들어 레거시 코드의 수정 없이 신규 URL로 리다이렉트 하여 개발 생산성을 높여보도록 한다.

2015년 12월 1일 1차 개정
2015년 7월 17일 초안 작성

서론

오래된 URL을 신규 URL로 변경해주는 작업이 필요 했다. 서버의 핸들러 또는 HTML 템플릿을 수정하지 않고 자동으로 임의의 변환된 결과를 얻어와 개발 생산성을 향상 시키고 싶었다. 원래 이런 용도로 외부 바이너리를 실행할 수 있는 mod_ext_filter, 정규식을 설정해서 치환하는 mod_substitute 가 있지만 좀 더 성능을 높여보고자 mod_substitute 를 기반으로 정규식을 걷어내고 패턴을 모듈에 내장하여 함께 컴파일 했다. 굳이 아파치 모듈을 직접 만든 이유는 고성능 때문이며 따라서 모든 패턴을 내장하여 함께 빌드한 것 또한 고성능이란 최종 목적에 잘 부합하는 방식이기도 하다.

설정

아파치 모듈이므로, 기존 모듈과 동일한 형태로 httpd.conf 설정에 등록할 수 있다.

LoadModule url_replace_module modules/mod_url_replace.so
...
<Directory "/Users/likejazz/workspace/github/httpd-build/htdocs">
...
    SetOutputFilter URL-REPLACE
</Directory>

패턴 적용

패턴을 내장했기 때문에 수정을 할때는 mod_url_replace.c 에서 코드를 직접 수정한 후 다시 컴파일해야 하는 번거로움이 있다. 다행히 아파치 모듈은 apxs로 손쉽게 빌드 가능하다.

$ apxs -i -a -c mod_url_replace.c

아울러 모듈명은 url-replace 로 정했지만 URL 외에 다양한 룰도 얼마든지 적용이 가능하다. 아래는 패턴과 변환하려는 주소를 등록하는 방법이다.

char *spdy_addr = "//t99.search.daumcdn.net/";

add_pattern(p, dcfg, "//t1.search.daumcdn.net/", spdy_addr);
add_pattern(p, dcfg, "//t2.search.daumcdn.net/", spdy_addr);
add_pattern(p, dcfg, "//t3.search.daumcdn.net/", spdy_addr);
add_pattern(p, dcfg, "//t4.search.daumcdn.net/", spdy_addr);

참고

원래 다른 모듈명으로 사내 CDN 주소 변경 용도로 만들었으나 정리하여 오픈소스로 공개한다. 공개하면서 일부 코드를 함께 정리했는데, 정리한 부분은 다시 사내 버전에 반영 하면서 상호 개선 효과를 얻을 수 있었다. 소스 코드는 단일 C 파일로 작성되어 있으며 README에 이용 방법과 설치 방법을 기술했다.

Last Modified: 2015/12/01 00:00:00
자바 알고리즘 인터뷰 파이썬 알고리즘 인터뷰

카카오 코딩 테스트 출제위원이 직접 집필한,
리트코드(LeetCode) 문제로 풀어보는,
구글, 마이크로소프트, 네이버, 카카오
코딩 테스트 완벽 가이드
『자바 알고리즘 인터뷰』,
『파이썬 알고리즘 인터뷰』

이 사이트의 운영 비용을 후원할 수 있으며, 후원자에게 혜택을 제공할 예정입니다.

© 2000 - Sang Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill. Logo and wiki background image was brought from Bear.