Ответ 1
В блоке местоположения вам необходимо повторно указать имя_папки.
Я хочу защитить свое недавно развернутое приложение Rails 3 с базовой HTTP-аутентификацией. Он работает на последнем Nginx/Passenger, и я использую следующую директиву Nginx для защиты корневого каталога в Интернете:
location = / {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
}
Файл htpasswd был сгенерирован с использованием Apache htpasswd utililty. Однако, после ввода правильного имени пользователя и пароля, я получаю перевод на страницу 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 запускалось после ввода моей информации для входа?
В блоке местоположения вам необходимо повторно указать имя_папки.
Вы можете позволить 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
проходили через один и тот же фильтр.
Проверьте журнал ошибок Nginx. 403
означает, что вы неправильно указали путь к файлу паролей.