===========================================================
- 프로젝트 사이트 : http://kldp.net/projects/modurl/
- 무한루프 이슈 : http://kldp.net/projects/modurl/issue/302676
===========================================================
==================== 1. 문제점 =============================
===========================================================
1.[ UTF-8 보내기 설정 on ] 설정시 무한루프, 미설정시 404
===========================================================
<mod_redurl.c 미설정시 404응답>
x.x.x.x - - [10/Mar/2010:10:02:59 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 404 283
<mod_redurl.c 설정시 301응답 무한루프>
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
.............
.............
===========================================================
2.[ UTF-8 보내기 설정 off ] 둘다 200응답
===========================================================
<mod_redurl.c 미설정시 200>
x.x.x.x - - [10/Mar/2010:10:14:13 +0900] "GET /%C7%D1%B1%DB.gif HTTP/1.1" 200 2326
<mod_redurl.c 설정시 200>
x.x.x.x - - [10/Mar/2010:10:17:42 +0900] "GET /%C7%D1%B1%DB.gif HTTP/1.1" 200 2326
===========================================================
==> mod_redurl.c를 사용하는 이유가 utf-8로 보내기 설정이 되어있을때도
정상적으로 한글파일이 보이게끔 하려는 것인데 오동작을 함으로써 무한루프에 빠지게 됩니다.
================ 2. 동작방식 ===============================
===========================================================
mod_redurl.c는 두가지 방식으로 나뉘어져 집니다.
1. mod_spelling 을 수정한 버전(redirect버젼 : 현재 개발중지)
2. 내부에서 직접 변환을 하여 찾는 방식
++ 이전버젼(redirect방식)의 경우(1번)
(1)클라이언트에서 페이지 요청-> (2)URL을 UTF-8로 보냄 -> (3)서버에서 redirect 페이지 안내
-> (4)클라이언트에서 redirect 페이지 요청
위 순서에서 4번에서 redirect된 부분을 다시 UTF-8로 보내버리므로 또 서버에서 redirect 시키고
이것이 반복되다보니 무한 루프에 빠진다고 합니다. (http://kldp.net/projects/modurl/issue/302676)
++ 2번째 방식(내부에서 직접 변환하여 찾음)으로 구동시에는 UTF-8로 URL을 보내도 정상적으로 처리됩니다.
(아래는 해당 로그)
===========================================================
[client x.x.x.x] mod_url configuration: ServerEncoding EUC-KR, ClientEndoding UTF-8
[client x.x.x.x] Oirg => /\xed\x95\x9c\xea\xb8\x80.gif (11)
[client x.x.x.x] Fixed => /\xc7\xd1\xb1\xdb.gif (9)
[client x.x.x.x] Check Code => 0
[client x.x.x.x] check_redurl_iconv: iconv convert end -------------------
[client x.x.x.x] pre finfo.st_mode => 33188
[client x.x.x.x] pre realpath => /www/htdocs/\xc7\xd1\xb1\xdb.gif
[client x.x.x.x] pre r->uri => /\xc7\xd1\xb1\xdb.gif
[client x.x.x.x] pre r->unparsed_uri => /%C7%D1%B1%DB.gif
[client x.x.x.x] pre r->parsed_uri.path => /\xc7\xd1\xb1\xdb.gif
===========================================================
========== 3. 미치는 영향 ===================================
1. 요청을 받은 아파치 프로세스에 부하가 증가할 수 있습니다.
(관련하여 log쪽에 파일쓰기로 인한 DISK I/O 부하)
2. 무한루프가 돌다보니 pps가 높아집니다.
3. 이외에도 기타 서버상의 설정과 맞물려 영향을 줄 수 있을 것으로 보입니다.
===========================================================