• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

Nginx Cookie Secure 관련 문의

21.06.20 23:42 작성 조회수 831

1

안녕하세요.

스스로 해결해보려고 다양하게 시도했지만 문제 해결이 어려워 문의드립니다.

back 쪽에서 nginx.conf 를 아래와 같이 수정했고, 

proxy_set_header 이외 넣어보라는 것들 5개 정도 넣어봤지만 잘안됐습니다.

(restart) 후 systemctl status nginx 특별한 오류 없이 잘 작동됩니다.

1) 해결하기 위한 노력

app.set('trust proxy', 1);  --> app.enable('trust proxy'); 로 수정 해봤습니다. 

2) 해결하기 위한 노력

proxy, secure 모두 true 상태에서 계속해서 secure 체크가 안됩니다. 

true를 process.env.NODE.ENV === 'production'으로 수정을 해봤습니다.

계속해서 secure 체크가 안됩니다.

추가적으로 수정해야 할 부분이 있는지 문의 드립니다.

if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', 1);
app.use(morgan('combined'));
app.use(hpp());
app.use(helmet({ contentSecurityPolicy: false }));
app.use(cors({
origin: 'https://kakao.gg',
credentials: true,
}));
} else {
app.use(morgan('dev'));
app.use(cors({
origin: true,
credentials: true,
}));
}
app.use('/', express.static(path.join(__dirname, 'uploads')));
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: true,
domain: process.env.NODE_ENV === 'production' && '.kakao.gg'
},
}));

답변 1

답변을 작성해보세요.

1

아래처럼 다 넣어보셨나요?

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.1:3065; proxy_redirect off;

추가 후 리스타트 했지만 똑같이 로그인이 풀려버립니다.

개인 컴퓨터 설정에 문제가 있는걸까요?

response cookie에 secure 체크되어 있는데 application 탭에 저장 안 되나요?

네 response cookie는 secure 체크가 뜨지만 application탭은 secure체크는 물론 줄 생성 자체가 안됩니다. 오타가 있다면 app.js, nginx가 원인이라고 생각해 계속 읽어보는 중 입니다.

위에 이미지에서 Name, Value 다음이 Domain인데 a로 시작하는 것 같은데 저게 뭐라고 되어있나요? 프론트랑 백엔드랑 공유하려면 api.kakao.gg가 아니라 .kakao.gg여야 합니다.

안녕하세요.

생각보다 혼자 해결하기가 힘들어서 다시 왔습니다..

우선 제가 생각했을 때 network Cookies Domain 수정을 위해서는 

아래 cookie domain이 가장 중요하다고 생각했습니다.

다시 한 번 api가 아닌 . 을 확인했고 reload도 해봤지만 해결이 안됐습니다.

config/config.js backUrl도 수정해봤지만 답이 아니였습니다.

혹시나 하는 마음에 nginx server name을 수정해봤지만 이 또한 방법이  아니었습니다.

node_modules > express-session > index.js 부분을 따로 수정해야 할까요?

app.use('/', express.static(path.join(__dirname, 'uploads')));
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: process.env.NODE_ENV === 'production',
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
domain: process.env.NODE_ENV === 'production' && '.kakao.gg'
},
}));
app.use(passport.initialize());
app.use(passport.session());

안녕하세요.

우선 문서 참고해서 도메인 주소만 넣고 확인해 본 결과 정상작동합니다.

왜 && 가 안먹는지 모르겠지만 공부하다 보면 답을 찾을 수 있을 것 같습니다.

항상 도움 많이 받고 있습니다. 감사합니다.

domain: '.kakao.gg'

process.env.NODE_ENV === 'production' &&

domain: process.env.NODE_ENV === 'production' && '.kakao.gg'

production이 아닌 것 아닌가요?

우선 'production' 을 입력해서 실행하면 Domain이 .kakao.gg로 작동하는게 아니라 api.kakao.gg 로 바뀌어버립니다. 

process.env.NODE_ENV가요.