6

Я размещаю приложение Rails на Rackspace с веб-сервером nginx.connect() failed (111: Connection failed) при подключении к восходящему потоку

При вызове любого Rails API я вижу это сообщение в /var/log/nginx/error.log: * 49 connect() не удалось (111: Соединение отказано) при подключении к восходящему потоку, клиент: 10.189.254.5, сервер: запрос: "POST/API/v1/пользователей/sign_in HTTP/1.1", вверх по течению: "http://127.0.0.1:3001/api/v1/users/sign_in", ведущий: "anthemapp.com"

  1. Что вышестоящий блок?
  2. Что такое/etc/nginx/sites-available/default? Это где я могу настроить это?
  3. Почему я беру ошибку выше?

Я провел несколько часов с 5-6 различными техническими специалистами Rackspace (они не знали, как это разрешить). Все это началось, когда я взял сервер в режим спасения и выполнил следующие шаги: https://community.rackspace.com/products/f/25/t/69. Как только я вышел из режима спасения и перезагрузил сервер, я начал получать ошибку, о которой я пишу. Tnx!

ответ

9

Nginx - это обратный прокси-сервер - его роль на вашем сервере заключается в том, чтобы принимать HTTP-запросы и прокси-серверы к другому процессу на том же хосте. «Восходящий поток», о котором говорится в сообщении об ошибке, относится к биту в конфигурации nginx (частью которого является файл /etc/nginx/sites-available/default), который сообщает ему, куда отправлять входящие запросы. Сообщение об ошибке, которое вы видите, указывает, что nginx получил запрос, но не смог отправить его другому процессу, к которому он должен был обратиться.

Когда ваш сервер перезагрузился, процесс nginx запустился, но ваш Rails-процесс - тот, который предназначен для прослушивания на порту 3001 - не сделал!

Как перезапустить процесс Rails зависит от того, как вы его запускали и как настроен ваш сервер. Это может быть столь же просто, как cd «ING в каталог вашего Rails приложения на сервере и работает:

rails server -b 127.0.0.1 -p 3001 -e production -d 

... но, чтобы избежать проблем, как это происходило в будущем (и улучшить производительность вашего Rails!), Было бы лучше использовать какой-то готовый к производству сервер приложений Rails. Я бы рекомендовал использовать Phusion Passenger, потому что это самое подходящее решение - их user's guide for nginx описывает установку и настройку - но есть много альтернатив. Есть отличная запись того, что ваши варианты, что они все означают, и как они относятся к the top answer of this StackOverflow question.

+0

Thans Ash! Я использую Thin в качестве моего сервера приложений. Как я могу гарантировать, что Thin работает? Как отлаживать конфигурацию между nginx и Thin? – etayluz

+0

А, хорошо, вы уже используете что-то другое, кроме WEBrick! Я не использовал Thin специально сам, но быстрый 'ps -ef | grep thin' должен показать вам, работают ли какие-либо тонкие процессы. –

+0

Кроме того: похоже, что 'sudo thin install' на самом деле напишет вам скрипт'/etc/init.d', который сделает тонкий запуск при загрузке. Это удобно! Вот сообщение в блоге, которое я нашел, что немного об этом говорит: http://jordanhollinger.com/2011/04/22/how-to-use-thin-effectivly/ –

0

В моем случае мне нужно запустить:

bundle install 
bundle update 

, а затем:

sudo stop puma-manager 
sudo start puma-manager 
0

Это будет решена, когда я бегу под командой

cap production puma:restart 

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