ошибка подключения () (111: соединение отказано) при подключении к восходящему потоку

Я размещаю свое приложение Rails на Rackspace с веб-сервером nginx.

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

  1. какова блоке upstream?
  2. что / etc/nginx/sites-доступно / по умолчанию? Здесь я могу это настроить?
  3. почему я получаю ошибку выше?

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

3 ответов


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

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

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

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

...но, предотвратить проблемы как это от случаться в будущее (и улучшить производительность вашего приложения Rails!), было бы лучше использовать какой-то готовый к производству сервер приложений Rails. Я бы рекомендовал использовать Phusion Пассажира потому что это самое решение "под ключ" - их руководство пользователя для nginx описывает установку и настройку, но есть много альтернатив. Есть отличная запись о том, каковы ваши варианты, что они все означают и как они относятся к в верхний ответ этого вопроса StackOverflow.


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

bundle install
bundle update

и затем:

sudo stop puma-manager
sudo start puma-manager

это разрешено, когда я запускаю ниже команды

cap production puma:restart

иногда это происходит, если мы переключаем версию ruby на производство