nginx 리버스 프록시에서 쿠키의 보안 플래그를 설정하는 방법은 무엇입니까?


12

https 전용 사이트를 제공하기 위해 nginx를 리버스 프록시로 사용하고 있습니다. 따라서이 사이트의 쿠키가 안전한 것으로 표시되기를 원합니다. 그러나 백엔드 서버는 http 서버이므로 보안 플래그를 쿠키로 설정하지 않습니다. 보안 플래그를 추가하기 위해 Set-Cookie 헤더를 수정하려면 어떻게해야합니까?


SO에 대해 물었다. Tomcat7에 대한의 nginx의 예를 들어 SO 참조 : stackoverflow.com/questions/19916906/...
조셉 욕망

1
현재는 무시할 수 없지만 trac.nginx.org/nginx/ticket/368 에 관한 문제 / 티켓이 있습니다 proxy_cookie_secure. 그러나 아직 구현되지 않았습니다 (이 문제는 오래되었습니다).
rugk

이 타사 모듈 이 도움이 될 수 있습니다.
Airis

답변:


4

nginx 프록시가 백엔드에서 생성 한 쿠키를 수정하고 보안 플래그를 설정하도록 할 수 있습니다. 영감을 얻으 려면 nginx 리버스 프록시에서 Set-Cookie의 도메인 부분을 다시 쓰는 방법을 참조하십시오 . .

그러나 보안 플래그를 설정하기 위해 백엔드에서 쿠키를 생성하는 것이 무엇이든 더 나은 솔루션이라고 생각합니다. 그렇게하는 방법은 또 다른 이야기 (또는 질문)입니다.


4
X-Forwarded-Proto헤더 를 설정하고 응용 프로그램 에서 헤더를 해석하는지 확인하는 데 도움이 될 수 있습니다 . 이것은 일반적인 기술이며 혼합 된 http / https 응용 프로그램이 프로토콜에 따라 올바르게 반응 할 수 있도록합니다.
Lukas

4

다음 nginx 구성 코드를 사용합니다.

# make cookie secure (case sensitive)
proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";

이것을 동적으로 만드는 정규 표현식 대신 FQDN을 사용할 수 있습니다.


이것은 응답 또는 요청과 응답 모두에 대한 것입니다. 클라이언트가 보안 플래그가 설정된 요청을 보내면 nginx가 요청을 제거하여 웹 서버가 불평하지 않습니까?
Tigran

클라이언트는 Cookie헤더에 보안 플래그를 다시 보내지 않습니다 .
r_3

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.