CI 묻고 답하기

제목 아파치 x-foward 세팅을 했는데 session ip가 로드밸런서로 잡힙니다..
카테고리 CI 4 관련
글쓴이 브링잇온0652 작성시각 2020/03/10 11:46:44
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 11785   RSS

세션 ip에 로드밸런서 ip가 잡혀 웅파님이 보내주신 부분 토대로 서치해서 수정해봤습니다

첨부한 사진처럼

로그포맷 %h 부분을 x-forwarded for 로 변경하고 나니

찍히는 아이피가 로드밸런서가 아닌 접속하는 본래 아이피로 잘 변경되었습니다.

config파일 맨 하단에 있는 proxy_ips는 아래와 같이 수정했습니다.

잘 될줄 알았는데 여전히 db에 저장되는 session ip는.. 로드밸런서로 잡히네요..

$config['proxy_ips'] = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : '';

 

[세션]

$config['sess_driver'] = 'database';

$config['sess_cookie_name'] = 'ci_session';

$config['sess_use_database'] = TRUE;

$config['sess_table_name'] = 'ci_sessions';

$config['sess_expiration'] = 3600; //7200

$config['sess_save_path'] = NULL;

$config['sess_match_ip'] = FALSE;

$config['sess_time_to_update'] = 300;

$config['sess_regenerate_destroy'] = FALSE;

 

음... 뭔가 놓치는 부분이 있는걸까요?

어렵습니다..


첨부파일 tt.png (33.7 KB)
 다음글 검색어 유지 문의드립니다!! (4)
 이전글 URL 문의 드립니다!! (2)

댓글

변종원(웅파) / 2020/03/10 12:48:04 / 추천 1

세션도 아래 함수를 이용해서 아이피를 가져옵니다.

아래 함수가 제대로 나온다면 세션에서도 작동되어야 정상입니다.

$this->CI->input->ip_address()
브링잇온0652 / 2020/03/10 15:48:42 / 추천 0

답변 감사합니다!

말씀해주신 대로 찍어보니 로드밸런서 ip로 잡힙니다..

이런 경우 $this->input->ip_address()의 주소를 본래 아이피주소로 변경하려면 어떻게 해야 할까요??

한대승(불의회상) / 2020/03/10 19:24:34 / 추천 1

application/config/config.php 파일을 오픈 하신후

$config['proxy_ips'] = '';

위 항목을 찾으신후 값에 로드밸런서 IP를 기록해 주세요.

브링잇온0652 / 2020/03/11 09:38:34 / 추천 0

불의회상님 답변감사합니다!

$config['proxy_ips'] 안에 로드밸런서 ip를 삽입하고 나니

$this->input->ip_address() 에 본래 아이피가 찍혔습니다.

그런데도.. db 테이블에는 로드밸런서 ip가 자동삽입되네요.. 어렵네요..

추가적으로 확인할 부분이 있을까요??

혹시 몰라서

$config['sess_match_ip'] = TRUE 해봤는데 동일합니다.. 

한대승(불의회상) / 2020/03/11 10:31:06 / 추천 1

@브링잇온0652 DB 세션 버그로 보입니다.

코드를 살펴보니 $this->input->ip_address()로 ip를 가져 오지 않고 $_SERVER['REMOTE_ADDR'] 로 가져오고 있네요.

세션 드라이버를 직접 수정해야 할듯 합니다.

system/libraries/Session/drivers/Session_database_driver.php 파일을 살펴보세요.

브링잇온0652 / 2020/03/11 11:14:52 / 추천 0

답변 감사합니다!

확인해보니 Session_database_driver.php 파일 안에 ip 관련된 부분이 모두 $_SERVER['REMOTE_ADDR'] 로 되어 있네요..

하.. 정말 감사합니다

$_SERVER['REMOVE_ADDR'] => $_SERVER['HTTP_X_FORWARDED_FOR']

로 교체하니 드디어.. session db에 올바른 사용자 ip가 잡힙니다.

바쁘실텐데 답변해주신 두 분께 정말 감사드립니다!