다른 도메인(프록시 서버o) 간 쿠키 공유

강보석·2021년 8월 7일
0

✨소개

nginx로 https 설정을 하다가 nginx와 같은 프록시 서버가 있을 때 따로 추가해줘야할 쿠키 설정이 있다는 게 떠올라서 글을 쓰게되었습니다.

✨쿠키 공유하기

우선 다른 도메인간 혹은 포트 간 쿠키 공유는 물론이고 요청과 응답을 보내려면 cors 설정을 해줘야 합니다. http 요청을 할 때 access control allow origin에 해당 도메인이 있어야 요청이 가게 되는데요. 귀찮게 하는 부분도 있기는 하지만 보안상으로는 좋기 때문에 뭐라 할 수는 없죠.

게다가 cors라는 패키지를 사용하면 정말 간단히 해결할 수 있습니다. 일단 이 글은 cors에 관한 글이 아니기 때문에 이 정도로 마치고요.

🎐세션 설정하기

express-session와 cookie-parser라는 패키지를 쓸 때 nginx와 같은 프록시 서버가 있을 때 제가 어떻게 설정을 했는지 보여드리겠습니다. 그 전에 개발 상태였을 때 상태를 보여드리겠습니다. (참고로 저는 express.js를 사용중입니다.)

session({
  resave: false,
  saveUninitialized: false,
  cookie: {
      httpOnly: true,
      secure: false
  },
  secret: process.env.COOKIE_SECRET!,
});

개발 상태기 때문에 secure도 false로 되어있습니다. 이제 배포 상태일 때를 보여드리겠습니다.

session({
  resave: false,
  saveUninitialized: false,
  proxy: true,
  cookie: {
      httpOnly: true,
      secure: true,
      domain: process.env.NODE_ENV === 'production' && '.kihat.ga',
  },
  secret: process.env.COOKIE_SECRET!,
});

보면 proxy: true와 cookie에서는 domain 부분이 추가되었습니다.(https 배포상태기 때문에 secure도 true가 되어있습니다.) 거기에 추가로

app.set('trust proxy', 1);

설정까지 추가해줘야 합니다.

이렇게 proxy: true, domain 그리고 app.set('trust proxy', 1); 이 세 부분을 설정해주시면 프록시 서버가 중간에 있더라도 쿠키가 잘 가게 됩니다.

profile
안녕하세요. 컴퓨터를 공부하는 학생입니다.

0개의 댓글