프로필 사진
답수
bolt icon80·10개월·
416
·수정됨
공유

Nginx로 SSL 설정한 후부터 구글 로그인이 실행하지 않습니다.

안녕하세요? 몇명이서 토이 프로젝트 진행하고 있는 사람입니다.


현재 미니게임 관련 프로젝트를 진행하고 있고, AWS ubuntu20.04를 이용해서 배포할 예정입니다.


SSL을 하면서 Nginx를 사용했고, 그 과정에서 구글로그인이 실행되지 않습니다(자체 구현한 로그인은 정상작동).


구글로그인 관련된 코드는 아래와 같습니다.

// google-oauth router.get( "/google", passport.authenticate("google", { session: false, scope: ["email", "profile"], }) // 구글 로그인 페이지로 이동하여 로그인 이루어짐 ); router.get( "/google/callback", // 로그인 성공 시 callbackURL 설정에 따라 이 라우터로 이동 passport.authenticate("google", { session: false }), (req, res) => { const { id, name } = req.user; const token = generateUserToken(id, name); const query = qs.stringify({ token }); // token=string , 객체를 쿼리스트링으로 만들어준다. res.redirect(`/auth-redirect?${query}`); } );


console.log를 찍어본 결과 정보가 제대로 담겨서 /google/callback api로 잘 넘어오고 redirect도 되지만, nginx에서 이 리다이렉트를 인지하지 못 하는 것 같습니다.


Nginx의 cnofig는 다음과 같습니다.

# Default server configuration # server { listen 80; listen [::]:80; root /home/ubuntu/superLuck/build; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name {도메인 적음}; location / { try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:3333; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # websocket reverse proxy location ~* \.io { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy false; proxy_pass http://localhost:3333; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /api/auth/google/callback { proxy_pass http://localhost:3333; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Auth-Request-Redirect $request_uri; } listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/{도메인}/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/{도메인}/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # } #} server { if ($host = {도메인}) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name {도메인}; return 404; # managed by Certbot }


제가 찾아본 결과, Nginx에서 oauth proxy를 사용하여 구글 인증을 추가해야하는 것 같은데, 이렇게 해야만 해결이 가능한건지, 만약 그렇다면 이는 어떻게 하는지 간단한 흐름만 알려주시면 감사하겠습니다!



cat-footer