отправить сетку и проанализировать 502 Bad Gateway с помощью nginx

Я пытаюсь перенести свое приложение для синтаксического анализа в цифровой океан и следую этому руководству:

https://www.digitalocean.com/community/tutorials/how-to-migrate-a-parse-app-to-parse-server-on-ubuntu-14-04

Все работает отлично, пока я не дойду до самого конца раздела Test Parse Server (Executing Example Cloud Code)

Я протестировал облачный код для примера облачного кода, который был предоставлен в руководстве:

Parse.Cloud.define('hello', function(req, res) {
  res.success('Hi');
});

поэтому я получил привет в своем браузере, а также в почтальоне. См. изображение здесь: https://cloudup.com/cH2dbBx1KTo

Затем я тестирую функция, которая использует службу sendgrid для отправки электронных писем (http://blog.parse.com/announcements/introduction-the-sendgrid-cloud-module/), файл моего облачного кода выглядит так:

см. изображение: https://cloudup.com/cD6MNRP3Tft

и теперь я пытаюсь запустить свой почтовый запрос от почтальона, и я получаю сообщение об ошибке даже в моей функции приветствия, которая работала раньше

См. изображение: https://cloudup.com/cIkwJ6552_5

Итак, я оглядываюсь и выясняю, что это проблема с моим импортом sendgrid.

вар sendgrid = требуют ("sendgrid"); sendgrid.initialize («xxxxxx», «xxxxx.»);

в этих строках.

есть ли у кого-нибудь опыт работы с кодом цифрового океанского облака и службой отправки электронной почты по сетке, пожалуйста, помогите мне, я буду благодарен, так как это последний оставшийся шаг, и я закончу свою миграцию :)

ура Танзил


person Tanzeel    schedule 10.05.2016    source источник
comment
Вы уверены, что это не ошибка брандмауэра? Или вы правильно установили index.js (файл настройки синтаксического анализа)... в вашем случае это экосистема.json   -  person Mazel Tov    schedule 10.05.2016
comment
Я отредактировал свой вопрос, включив в него и файл экосистемы.json. Я смог сделать запросы curl к моему экземпляру mongoDB с моей домашней машины, и он вернул мне результат из этой коллекции. На данный момент этот запрос на завивание также возвращает мне ошибку 502 Tanzeels-MacBook-Pro:eclipse trana$ curl -H "X-Parse-Application-Id: my app id here" https://test.pacecouriers.com/parse/classes/Drivers <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.4.6 (Ubuntu)</center> </body> </html>   -  person Tanzeel    schedule 11.05.2016


Ответы (2)


вы должны указать URL-адрес сервера в файле конфигурации разбора. Это необходимо и может быть причиной того, что вы не можете запустить облачный код.

"PARSE_SERVER_URL": "http://localhost:1337/parse"

URL-адрес должен быть таким же, как вы используете. В этом руководстве также есть ошибка в конфигурации Nginx, я объяснил ее здесь https://serverfault.com/questions/765627/cannot-post-get-over-ssl/766428#766428

person Mazel Tov    schedule 10.05.2016
comment
Да, этот ответ, который вы опубликовали, действительно помог мне заставить мои запросы POST и GET работать :), и я смог отлично получить данные из своих коллекций. Весь облачный код работал нормально, за исключением упомянутой выше функции отправки сетки. Эта функция отправляла обратно 502 Bad Gateway. Позже я продолжал попытки и получил 301 parmanently, и после этой ошибки мой cloound-код не работает. - person Tanzeel; 11.05.2016
comment
Я собираюсь попробовать новую каплю и снова пройти весь процесс, включая вашу ссылку, которая была действительно полезна для работы моих GET и POST. Я буду регистрировать все здесь. Я думаю, что какая-то проблема с почтой sendgrid связана с проблемой или, возможно, с брандмауэром. Я опубликую свою повторную попытку здесь в ближайшее время. Спасибо за ответ :) ура - person Tanzeel; 11.05.2016
comment
я бы проверил проблемы на github https://github.com/ParsePlatform/parse-server/issues?utf8=%E2%9C%93&q=sendgrid - person Mazel Tov; 11.05.2016
comment
Эй, я собираюсь изучить эти проблемы для решения. Я обновил свой вопрос и сузился до основной причины. похоже, проблема связана с sendgrid. - person Tanzeel; 11.05.2016

Итак, я посмотрел на pm2 и увидел журналы в реальном времени, команда

pm2 logs

сначала, когда я запустил команду, я увидел некоторые ошибки, возможно, они были там раньше:

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_

Затем я попробовал функцию hello cloud из приложения postman, чтобы проверить ее вывод в журналах pm2, и получил следующее:

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_

Затем я пытаюсь запустить функцию sendgrid sendMail и обнаруживаю, что ключ API, который я использовал в моей функции sendgrid, выдает ошибку ReferenceError: XXXXXXXXXXXX is not defined

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_

Поэтому я вернулся к своему облачному коду и использовал кавычки вокруг моего параметра API-ключа и передал его в виде строки в моей функции инициализации сетки отправки. Затем я повторяю попытку и получаю

[Error: The provided authorization grant is invalid, expired, or revoked]

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_ _179x47

Поэтому я вернулся к своей учетной записи sendgrid и убедился, что используемый мной API-ключ был правильным, и, похоже, все было в порядке. Я проверил еще раз и снова получил ту же ошибку, поэтому я решил сгенерировать новый API-ключ на всякий случай.

Итак, я понимаю, что использовал не API-ключ, а API KEY ID:

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_

Когда мы создаем новый API-ключ на sendgrid, они один раз дают нам фактический API-ключ и просят нас хранить его в каком-то безопасном месте:

We can only display the key above one time. Please store it somewhere safe because as soon as you navigate away from this page, we will not be able to retrieve or restore this generated token.

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_ _179x47

Итак, после того, как я использовал настоящий API-ключ, я смог отправлять электронные письма ????

Но одна небольшая проблема все еще остается, и я не уверен, что это из-за почтальона, который я использую для запуска облачного кода, или чего-то на сервере синтаксического анализа или nginx, который все еще возвращает мне 502 Bad Gateway в качестве ответа.

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_

Но когда я смотрю журналы для моего сервера синтаксического анализа, я вижу

parse-wrapper-0 { message: 'success' }

documents_ _parse_pacecourier___root_ _ssh_root_159_203_35_195_ _179x47

но он никогда не возвращается ко мне в моем почтальоне, и вместо этого я получаю ошибку 502, не знаю почему, но электронные письма отправляются успешно :)

person Tanzeel    schedule 12.05.2016