2016-06-24 3 views
13

NodeJS, MongoDB (Mongoose : 드라이버로 사용) 및 ExpressJS를 사용하는 완전한 웹 응용 프로그램이 있습니다.NodeJS가있는 Google App Engine 502 (잘못된 게이트웨이)

프로젝트가 로컬 컴퓨터에서 완벽하게 작동합니다. 오늘 나는 모든 것을 생산에 옮기기로 결정했다. 저는 Google App Engine을 사용하여 응용 프로그램을 호스팅하고 Compose (공식적으로 MongoHQ)를 사용하여 데이터베이스를 호스팅합니다.

내 API가 제대로 작동하지 않지만 App Engine이 내 응용 프로그램을 완벽하게 처리합니다. 내 API는 example.com/api에서 제공되며 각 요청 (GET, POST, DELETEPUT)은 모두 502 (잘못된 게이트웨이) 오류를 반환합니다.

원격 MongoDB 데이터베이스에 연결되어있는 동안 내 로컬 컴퓨터에서 응용 프로그램을 실행하려고 시도했지만 완벽하게 정상적으로 작동했습니다. 따라서 MongoDB가 아닌 App Engine 또는 NodeJS에 문제가 있어야합니다.

오류가 없어도 Google Cloud 내 모든 오류 로그를 확인해 보았습니다.

API에 대한 요청을 허용하지 않지만 App Engine/NodeJS에서 내 애플리케이션의 정적 콘텐츠를 완벽하게 지원하는 이유는 무엇입니까?

답변

10

502 잘못된 게이트웨이는 일반적으로 Nginx 측에서 오류가 발생합니다. 불행히도 이러한 로그는 클라우드 로깅에 반영되지 않았습니다.

많은 경우에 HTTP 패킷이 버퍼 또는 유사한 것에 비해 너무 큽니다. nginx 로그를 볼 수있는 방법은 다음과 같습니다.

  • VM을 하나만 사용하십시오. 이것은 꼭 필요한 것은 아니지만, 한 대의 시스템에서 요청을 알고있는 경우 응용 프로그램을 디버그하는 것이 더 쉽습니다. 당신은 당신의 애플리케이션 제목이를 추가하여이 작업을 수행 할 수 있습니다 :

manual_scaling: instances: 1 다음 자기 관리에 VM이에서 "구글이 소유"

  • 스위치를 다시 배포합니다. 이 작업은 Cloud Console에서 수행 할 수 있습니다. Compute Engine 인스턴스로 이동하여 App Engine 버전과 일치하는 인스턴스 이름을 클릭하면 자체 관리로 전환하는 옵션이 표시됩니다.

  • gcloud compute ssh <instance name>

  • 는 실행중인 컨테이너를 볼 수있는 기계

  • docker ps에 SSH합니다. nginx라는 이름의 컨테이너를 찾아 ID를 획득하십시오.

  • 일단 컨테이너 ID가 있으면 docker exec -it <container id> -- cat /var/log/nginx/error.log 수 있어야합니다. 전체 로그 디렉토리 인 ls을 원할 수 있습니다.

잘못된 내용에 대한 더 큰 힌트가 표시됩니다.

나는 이것이 더 복잡해야 함을 알고 있습니다 : - \ 위의 단계에 문제가 있다면, 코멘트를 남겨주십시오. 오류를 발견하고 그에 대한 처리 방법을 모르는 경우 의견을 남기십시오.

+0

는 자, 여기 플롯 트위스트의 8080 포트에서 서버가 수신되었는지 확인합니다. 내'app.yaml' 파일에'manual_scaling : instances : 5'를 추가하고 배포하면 전체 문제가 해결됩니다. 그게 왜 일어날까요? – Fizzix

+0

이미지 업로드와 같은 고급 API 중 하나에 액세스하려고해도 여전히 실패합니다. 이것은 아마도 내 BaseStock 문자열을 내 API에 보내려고하기 때문일 것입니다. 서버 API로 보낼 수있는 데이터의 양을 늘릴 수있는 방법이 있습니까? – Fizzix

+0

와우, 내가 manual_scaling을 의미한다는 것을 깨달았습니다. 인스턴스가 5가 아닌 1로 설정되었습니다! 그런 식으로 당신은 당신이 바라는 요청을 확실히 알고 있습니다. 오류 로그를 찾을 수 없는지 확인하기 위해 나머지 단계를 수행합니다. 어쨌든 패킷이 버퍼에 비해 너무 큰 경우 직접 증가시킬 방법이 없으므로 여러 패킷으로 전송해야하는 데이터를 분리하는 방법을 찾는 것이 가장 좋습니다. –

관련 문제