Подтвердить что ты не робот

Rails 3.1, nginx, запрещен каталог каталогов

Я получаю следующую ошибку в 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 по умолчанию ожидает:

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

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

Любые идеи, почему приложение rails, похоже, не запускается?

4b9b3361

Ответ 1

Хорошо, я ответил на свой вопрос. В моем файле nginx.conf я отсутствовал в конфигурациях eas_ruby и passenger_root. Обратите внимание, что путь_диски должен быть оберткой, если вы используете 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;

Ответ 2

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

Ответ 3

Если вы используете это с помощью 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

Извините, что ответили на старый вопрос, но это кажется актуальным (по крайней мере для меня;-)) У меня была аналогичная проблема, и мне удалось ее решить благодаря этому сообщению, но по-другому. Кроме того, вы можете настроить /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

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