2017-11-11 5 views
0

nginx 프록시에서 oAuth 리디렉션에 문제가 있습니다. 내 웹 사이트에 Google 소셜 로그인 버튼이 있으며 로컬로 잘 작동합니다. 내 프로젝트를 온라인으로 업로드하고 그것을 nginx 프록시 아래에 넣어 더 이상 작동하지 않습니다. 로그인을 클릭하면 브라우저가 mywebpage.com/auth/google/callback 대신 localhost : 3000/auth/google/callback으로 리디렉션되어 해당 페이지가 존재하지 않는다고 말합니다.
나는이 질문을 알고있다 : Nginx proxy with Google OAuth 2.0과 내가 제안한 픽스를 사용하려고했지만 Nginx 프록시로 Express에서 Meteor는 NodeJS를 실행하지 않기 때문에 작동하지 않았다.
그들이 제안하는 두 번째 해결책은 proxy_redirect를 사용하는 것이지만 작동하지 않는 것 같습니다. 나는 구글과 oAuth가 있는데, 클릭 할 때마다 (브라우저 리다이렉트, 팝업이 아니다) 프록시를 사용하는 url 인 localhost : 3000으로 리다이렉트한다.
proxy_redirect의 가능한 모든 구성을 시도했지만 항상 저를 리디렉션합니다. 이것은 nginx에서 내 프록시 부분입니다 :NodeJS oAuth Google Nginx 프록시

location/{ 
    proxy_pass http://127.0.0.1:3000; 
    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; 
    proxy_redirect http://localhost:3000 https://mywebsite.com; 
} 

어떤 제안이 있습니까?

답변

0

이걸 서버 블록 안에 넣고 있습니까?

server { 
    listen 80; 
    server_name example.com; 
    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     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; 
    } 
} 

proxy_redirect도 제거해보십시오. 그리고 나는 당신이 http에서 https로 또는 https에서 http로 프록시 할 수 있다고 생각하지 않는다. 내가 아는 한 프로토콜은 동일하게 유지해야합니다.