• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

[공유목적] nginx 설정 후 쿠키가 전달되지 않을 경우

23.02.22 15:09 작성 23.02.22 15:12 수정 조회수 1.55k

1

 

작성한 이유(저는 이 문제로 골머리를 앓았어서..)

  • 도메인 설정 후 쿠키가 전달되지 않아 로그인이 되지 않았다가 해결되었습니다

    session 설정 뿐만 아니라 nginx 설정도 확인해야 합니다

    혹시라도 이 문제로 고통받으시는 분이 있다면 해결책이 되길 바랍니다

     

 

backsession 설정

if (process.env.NODE_ENV === "production") {
  app.use(morgan("combined"));
  app.use(hpp());
  app.use(helmet());
  app.set("trust proxy", 1); //배포 시 추가
  app.use(
    cors({
      origin: "https://engword.shop", //local "http://localhost:3000"
      credentials: true,
    })
  );
} else {
  app.use(morgan("dev"));
  app.use(
    cors({
      origin: true,
      credentials: true,
    })
  );
}

passportConfig();

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));

app.use(
  session({
    saveUninitialized: false,
    resave: false,
    secret: process.env.COOKIE_SECRET,
    proxy: true, //배포 시 추가
    cookie: {
      httpOnly: true,
      secure: process.env.NODE_ENV === "production" ? true : false, //https 적용 시 true
      sameSite: process.env.NODE_ENV === "production" ? "none" : false,
     domain: process.env.NODE_ENV === "production" && ".engword.shop",
    },
  })
);

 

nginx 설정

back 에서 설정한 nginx입니다

sudo vim /etc/nginx/nginx.conf

server {
	server_name api.engword.shop;
    location / {
    	proxy_set_header HOST $host;
        //추가
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
       	proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.0:3000 //http로 설정할 것
        proxy_redirect off;
    }
    //아래는 certbot 내용
}

위와 같이 설정을 바꾼 후 nginx를 다시 실행합니다

sudo systemctl restart nginx

 

pm2로 진행 시 pm2를 껏다 키거나, pm2 재시작을 하시면 됩니다.

pm2 껏다 키는 경우

sudo npx pm2 kill

npm start (혹은 sudo npm start)

pm2 재시작

sudo npx pm2 reload all

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!