웹모아 
웹모아  로그인  회원가입   
웹모아
 
자잘한팁
 


  [RE] 다른 서버, 다른 도메인간 세션 공유 방법
  등록: 2007-04-19 14:19:36 조회:2947


www.domain.com
chat.domain.com
shop.domain.com
mail.domain.com 등등
뒷부분은 같고 호스트 부분이 틀릴때 세션을 공유하는 방법입니다.

일단, 쿠키와 세션에 대한 기본적인 이해부터 하겠습니다. 원리는 간단하니까요..

일단, 서버의 도메인이 www.domain.com 이라고 가정을 하겠습니다.


1. 먼저 쿠키..

www.domain.com 에서 쿠키를 발행할수 있는 최대범위는 .domain.com 입니다
그니까 다음처럼 하면

setCookie("logid","gagamel", 0, "/", ".domain.com");
setCookie("passwd","gozila", 0, "/", ".domain.com");

뒤부분이 .domain.com 으로 끌나는 서버(예를들면 shop.domain.com)에서는 www.domain.com 에서 발행한 쿠키를 쓸 수 있게 되죠.

echo $logid; <-- 요렇게요....

하지만 쿠키는 중요정보가 모두 클라이언트쪽으로 보내진다는데서 보안상 무척 좋지 않습니다.
그래서들 요즘에는 세션를 쓰죠...^^


2. 세션이란?

세션은 쿠키의 단점을 보완하고자 만들어졌습니다.
위의 예를 들자면

$logid = "gagamel";
$passwd = "gozila";
session_register("logid");
session_register("passwd");

요렇게 쓰겠죠.....
이렇때 실제로 세션은 어떻게 동작을 하는가.??

실제로 위의 logid 갈은 변수들의 값은 서버에 기록이 됩니다.
보통 설정에 파일로 기록이 되게 되어 있죠.
위치는??
물론 설정에 /tmp 밑에 저장이 되게 되어 있습니다.
그럼 파일이름은??
그건 php 가 그때그때 랜덤하게 유니크한 값을 만들어서 파일이름으로 씁니다..
sess_50fffa7e58f63c83ac0473fb928f17ed <-- 머 요딴거
그리구 나서 이 파일이름을 클라이언트에게 쿠키로서 보내주게 되어있죠..


그럼 php 가 아래같은 문장을 만나게 되면

echo $logid;

일단 쿠키로 발행한 그 파일이름은 이미 헤더정보로 클라이언트에게서 읽어온 상태입니다.
그리고 설정에서 정한 위치에 똑같은 파일이름이 있나 확인하구 있으면 거기에 있는 변수값을 읽어오는거죠...
물론 파일이 없으면 누가 세션스푸핑을 한다거나 세션 만료시간으로 인해 파일이 없어졌다거나 한거겠죠..

쉽죠..^^ 세션은 쿠키를 보안한거지 전혀 새로운 개념은 아닙니다...


3. 자, 그럼 세션공유를 해 봅시다...

php.ini 에 보면 세션의 기본 설정은
- session.save_handler = files ; 저장방식은 파일로 (db도 가능)
- session.save_path = /tmp ; 위치는 /tmp
- session.name = PHPSESSID ; 쿠키로 발행될 쿠키변수 이름
- session.cookie_path = / ; 쿠키가 유효한 디렉토리
- session.cookie_domain = ; 쿠키가 유효한 도메인인데 기본은 비어있습니다
- 다른건 생략

요렇게 되어 있습니다. 그래서 디폴트 상태로 세션을 쓰게 되면 쿠키로 발행된 세션의 파일이름은 현재의 도메인에만 먹게 되어 있죠..

여기서 두가지만 바꾸어 주게되면 .domain.com 으로 끝나는 모든 서버에 세션이 먹게 됩니다..

session.save_path = /tmp ;
session.cookie_domain = .domain.com ;

일단 두번째 처럼 해주면 쿠키로 발행된 PHPSESSID 는 .domain.com 의 모든 서버에서 먹게 됩니다...

첫번째는 실제 파일이 저장되어 있는 위치라고 말씀드렸죠..
만약 같은 서번데 도메인만 틀릴경우에는 변경할 필요없습니다.
그러나 서버가 틀리다면 문제가 있습니다.
이렇땐 nfs 등의 디렉토리 공유 방법을 써서 그쪽 디렉토리 이름으로 지정을 해 주셔야 합니다.
디렉토리 소유권은 nobody 로 해주고 권한은 700 정도로 해주면 됩니다.
이렇게 하면 세션은 공유가 되죠....^^

아님 nfs 등을 쓰기가 꺼림직하면 세션을 아예 db로 저장을 해서 공유하는 방법이 있습니다..
이건 세션핸들러 등으로 검색하면 잘 설명되어 있습니다. 그걸 참조하세요.
출처 : Tong - chouncle님의 PHP통



 댓글 (0)


자잘한팁
페이지: 1 / 3   


   리눅스에서 하드디스크 mount 하기1324
     CentOS 하드 마운트1426
   리눅스에서 캡쳐하는 방법2499
   특정 디렉토리의 사용량을 알려면2621
   시스템이 ping에 응답하지 못하게 설정하려면2143
   리눅스에서 공백이 포함된 디렉토리 처리2442
   cp 명령과 ln 명령의 차이점5562
   리눅스 명령어 top2223
   특정 디랙토리 인증걸기 htpasswd, htacc2514
   IP 주소 접속을 도메인 주소로 바꾸기2565
   apache 에서 '사이트 공사중' 2768
   한개의 호스팅으로 여러개 홈피 운영하기2131
    리눅스 실시간 트래픽 모니터링 하기2687
   리눅스에서 날짜를 기준으로 파일삭제9129
   윈도우에서 unload 받은 오브젝트를 리눅스에서 2234
   유닉스 및 리눅스 명령어 팁2841
   리눅스 부팅후 자동 실행2408
   리눅스 소유권바꿀때 인수 명단이 너무 김..에대해서3142
   find 명령어로 특정문자가 포함된 파일 찾기(홈마스타)(1) 2781
   리눅스에서 파일 찾기(홈마스타)2431
   특정 문자열을 포함하는 특정 파일들 찾는 쉘(홈마스타)2419
   인터넷 이용시 만나는 에러메시지의 의미(홈마스타)2515
   하이퍼텍스트 전송규약 1.1표준(안)(홈마스타)3957
   웹 로그 분석 기본 개념의 이해 (70) : 웹 로(홈마스타)2628
   mod_url(홈마스타)2848
   다른 서버, 다른 도메인간 세션 공유 방법 1차 개(홈마스타)3211
  [RE] 다른 서버, 다른 도메인간 세션 공유 방법(홈마스타)2948
   다른서버 세션공유(홈마스타)2903
   이미지 링크 못하게 하기(홈마스타)2301
   아파치 가상 유저 호스트 설정하기[modr_rewr(홈마스타)1423
≪ [1]  [2]  [3]   ≫

복수단어 검색은 공백(space)로 구분해 주세요.




공지사항
 
인기 글
5177
4722
4593
3980
3991
4335
4400
3857
10349
4100
4969
4277
3779
6787
4007
 
최근 글
167
279
189
168
115
146
2945
772
766
949
826
4037
3375
3425
3812