Защищенный паролем сайт Rails, работающий на Nginx и Phusion Passenger - PullRequest
10 голосов
/ 13 ноября 2010

Я хочу защитить свое недавно развернутое приложение Rails 3 с помощью базовой http-аутентификации.Он работает на последней версии Nginx / Passenger, и я использую следующую директиву Nginx для защиты корневого веб-каталога:

location = / {
  auth_basic "Restricted";
  auth_basic_user_file htpasswd;
}  

Файл htpasswd был создан с использованием утилиты Apache htpasswd.Однако после ввода правильного имени пользователя и пароля меня переводят на страницу 403 Forbidden error.Анализ журнала ошибок Nginx показал следующее:

directory index of "/var/www/mysite/public/" is forbidden, client: 108.14.212.10, server: mysite.com, request: "GET / HTTP/1.1", host: "mysite.com"

Очевидно, я не хочу перечислять содержимое каталога mysite / public.Как я могу настроить это правильно, чтобы приложение Rails запускалось после ввода данных для входа?

Ответы [ 3 ]

17 голосов
/ 13 ноября 2010

Вам необходимо повторно указать passenger_enabled в блоке местоположения.

6 голосов
/ 13 ноября 2010

Вы можете позволить Rails обрабатывать аутентификацию

# application_controller.rb
before_filter :authenticate

protected

def authenticate
  authenticate_or_request_with_http_basic do |username, password|
    username == "foo" && password == "bar"
  end
end

также вы должны установить config.serve_static_assets = true в вашем environment.rb (или applicaion.rb в Rails 3), чтобы статические активы в public проходили через тот же фильтр.

2 голосов
/ 13 ноября 2010

Проверьте ваш журнал ошибок Nginx.403 означает, что вы неправильно указали путь к файлу паролей.

...