Rails 3.1, nginx, индекс пассажирского каталога запрещен - PullRequest
13 голосов
/ 15 ноября 2011

Я получаю следующую ошибку в nginx (с 403) при посещении .com:

[error] 5384#0: *1 directory index of "/u/apps/<app-name>/current/public/" is forbidden

Я нахожусь на Ubuntu 10.04 и не могу на всю жизнь получить nginx, Passenger, Rails 3.1 и Capistrano, чтобы хорошо играть.

Я развертываюсь на / u с Capistrano.Все в / u 755, принадлежит пользователю приложения.

/ u / apps // current / public / имеет все мои активы, значок и все, что вы ожидаете.

Когда я добавляю autoindex on в nginx.conf, я получаю список общедоступного каталога /, что наводит меня на мысль, что у меня нет проблем с разрешениями.

Мой файл nginx.conf является ожидаемым по умолчаниюfor:

server {
    listen 80;
    server_name <app-name>.com;
    passenger_enabled on;
    root /u/apps/<app-name>/current/public/;
}

А в моем файле Capistrano deploy.rb нет ничего необычного.

Есть идеи, почему приложение rails не запускается?

Ответы [ 4 ]

29 голосов
/ 15 ноября 2011

Хорошо, я ответил на свой вопрос. Мне не хватало конфигураций passenger_ruby и passenger_root в моем файле nginx.conf. Обратите внимание, что путь passenger_ruby должен быть оболочкой, если вы используете RVM.

passenger_root /usr/local/rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.9;
passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby;
11 голосов
/ 12 ноября 2012

Если у вас уже есть passenger_root и passenger_ruby в вашем nginx.conf, но с этой ошибкой у вас должно быть несколько блоков местоположения. Тогда вы должны указать passenger_enabled on; внутри каждого блока местоположения.

7 голосов
/ 15 июня 2016

Если вы сталкиваетесь с этим с помощью Passenger 5+ и ваше приложение Rails является приложением 2.3.x, вам необходимо добавить файл config.ru в ваше приложение:

# Require your environment file to bootstrap Rails
require ::File.dirname(__FILE__) + '/config/environment'

# Serve static assets from RAILS_ROOT/public directory
# use Rails::Rack::Static
# Dispatch the request
run ActionController::Dispatcher.new  

Подробнеев официальном объявлении и github ticket .

Я знаю, что вопрос OP касался конкретно Rails 3.1, но я хотел бы включить его сюда, поскольку выходные данные идентичны, а поиск велмне на этот пост.

4 голосов
/ 04 октября 2013

Извините, что отвечаю на старый вопрос, но он кажется актуальным (по крайней мере, для меня ;-)) У меня была похожая проблема, и мне удалось ее решить благодаря этому посту, но по-другому. В качестве альтернативы вы можете настроить /etc/nginx/nginx.conf для использования:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/ruby;

А затем убедитесь, что файл location.ini является текущим, запустив:

passenger-config --make-locations-ini

Как уже говорилось, это сработало для меня, хотя я не эксперт, возможно, я играю с неправильными параметрами.

...