Nginx 역방향 에이전트 오류 이해 proxycookie_domain

3323 단어 nginx-modulenginx
기본 내용
Nginx 가 역방향 대 리 를 할 때 우 리 는 보통 proxy 를 추가 하 는 습관 이 있다.cookie_domain 설정, 쿠키 의 도 메 인 이름 변환, 예 를 들 어
...
location /api {
   proxy_pass https://b.test.com;
   proxy_cookie_domain b.test.com  a.test.com;
}       
...

이전 블 로그 에서 저도 이렇게 썼 습 니 다. 그런데 최근 에 프로젝트 에서 이 속성 을 설정 하지 않 고 정상적으로 돌아 가 는 것 을 발 견 했 습 니 다. 뒤에서 찬바람 이 불 었 습 니 다. 저 는 제 가 이 옵션 을 잘못 이해 한 후에 도 다른 사람 에 게 말 하고 있 는 것 을 알 게 되 었 습 니 다.
우선 프 록 시cookie_domain 의 공식 정의,
Syntax: proxy_cookie_domain off;
proxy_cookie_domain domain replacement;
Default:
proxy_cookie_domain off;
Context: http, server, location
This directive appeared in version 1.1.15.
Sets a text that should be changed in the domain attribute of the “Set-Cookie” header fields of a proxied server response. Suppose a proxied server returned the “Set-Cookie” header field with the attribute “domain=localhost”. The directive proxy_cookie_domain localhost example.org will rewrite this attribute to “domain=example.org”.
번역 하면 proxycookie_domain 매개 변 수 는 response 를 바 꾸 는 set - cookie header 의 domain 옵션 입 니 다. 백 엔 드 에 설 치 된 도 메 인 이름 domain 에서 도 메 인 이름 replacement 으로 전환 하여 쿠키 의 순 조로 운 전달 을 확보 하고 현재 페이지 에 기록 하 는 것 입 니 다. proxycookie_domain 은 response set - cookie 머리 에 있 는 domain 속성 을 처리 하 는 것 일 뿐 입 니 다.
그러나 response 가 set - cookie 를 쓸 때 domain 은 옵션 이 고 필수 항목 이 아니 라 는 것 을 알 기 때문에 다음 과 같은 상황 을 자주 볼 수 있 습 니 다.
이때 set - cookie 자체 에 domain 내용 이 없 기 때문에 proxycookie_domain 도 필요 없습니다. 이것 도 일부 항목 에 proxy 를 설정 하지 않 는 이유 입 니 다.cookie_domain 은 여전히 정상 적 인 원인 입 니 다.그러나 domain 을 설정 한 항목, 예 를 들 어 이러한 상황 에서 nginx 로 역방향 대 리 를 할 때 반드시 전환 해 야 합 니 다.
잘못된 지역 을 거 슬러 올라가다.
여기까지 말 하고 우 리 는 이전의 잘못된 이 해 를 다시 한번 살 펴 보 자.
"proxy cookie domain 의 역할 은 앞 뒤 쿠키 도 메 인 이름 전환 을 실현 하여 원활 한 전달 을 보장 하 는 것 입 니 다"
언뜻 봐 도 맞 는 것 같 지만, 지금 생각해 보 니 이해 가 안 되 네요. proxycookie_domain 의 역할 은 단 방향 이지 양 방향 전환 이 아니다.우 리 는 먼저 쿠키 의 전달 과정 을 보고 그림 한 장 을 훔 쳤 다.
브 라 우 저 는 요청 을 보 낼 때 request header 에 쿠키 항목 (내용 이 있 으 면) 을 가 져 옵 니 다. 이 쿠키 는 문자열 입 니 다. key = value 와 분점 으로 분 단 된 문자열 입 니 다.
도 메 인 이름 정 보 는 포함 되 어 있 지 않 습 니 다.이 는 브 라 우 저가 쿠키 옵션 을 설정 할 때 선택 한 내용 이 캐 시 인터페이스 도 메 인 이름 에 있 기 때 문 입 니 다.그리고 request 는 보 내 달라 고 요청 하면 쿠키 에 domain 정보 가 존재 하지 않 습 니 다. 일반적인 문자열 일 뿐 프 록 시패스 는 어느 위치 에 나 정상적으로 휴대 할 수 있 습 니 다.따라서 전단 에서 백 엔 드 까지 의 request 과정 에서 proxycookie_domain 은 소 용 없어 요.
한편, server 측 이 응답 을 할 때 set - cookie 의 domain 속성 을 통 해 쿠키 의 발효 도 메 인 목 표를 제어 할 수 있 습 니 다. 예 를 들 어 2 급 도 메 인 이름 쿠키 분리 등 을 할 수 있 습 니 다. 만약 에 전단 에서 받 은 set - cookie 의 domain 이 현재 도 메 인 이름과 일치 하지 않 거나 1 급 도 메 인 이름 이 일치 하지 않 으 면 (2 급 도 메 인 이름 은 1 급 도 메 인 이름 아래 의 쿠키 를 공유 할 수 있 습 니 다).이 쿠키 는 후속 통신 에서 무효 이기 때문에 domain 의 변환 을 해 야 합 니 다. 즉, response 에서 set - cookie 의 domain 변환 이 의미 가 있 습 니 다. 이것 이 바로 proxy 입 니 다.cookie_domain 의 역할 소재.reseponse 의 set - cookie 에서 domain 이 설정 하지 않 을 때 쿠키 가 브 라 우 저 에 순조롭게 들 어 오 면 브 라 우 저 는 이 쿠키 의 유효 도 메 인 이름 을 현재 도 메 인 이름 으로 자동 으로 설정 합 니 다.
이거 랑 비슷 한 거 프 록 시 도 있어 요.cookie_path 속성, 같은 이 속성 은 response set - cookie 의 path 속성 을 수정 하 는 데 만 사용 되 며, 일반적인 경우 에 도 적 게 사용 합 니 다.
두 어 마디 잔 소 리 를 하 다.
많은 문제 들 이 때로는 너무 당연하게 그것 이 어떤 것 인지, 그리고 효력 이 발생 하고 목적 을 달성 했다 고 생각 하기 때문에 우 리 는 그것 이 이렇다 고 생각 하지만, 왕왕 큰 얼굴 이 뒤에서 우연히 찾 아 온다.많이 배우 고 밑바닥 의 원리 에 관심 을 가 져 야 자신 이 이해 한 잘못 을 발견 할 수 있 습 니 다. 여러분 이 함께 노력 하 세 요 ~ 잘못 되면 지적 해 주세요 ~

좋은 웹페이지 즐겨찾기