NginxHttpAuthBasicModule с Sinatra & Passenger
Я обслуживаю статические страницы из приложения Sinatra с помощью Nginx.
Я реализовал базовую аутентификацию для одной страницы на сайте, используя NginxHttpAuthBasicModule, аутентификация прошла успешно, но Nginx не разрешает ссылку. Журнал ошибок дает -
2010/03/22 12:15:19 [error] 7143#0: *2902 open() "/home/me/live/mysite_home/public
/mypage" failed (2: No such file or directory), client: 82.71.18.122, server: mysite.com,
request: "GET /mypage HTTP/1.1", host: "mysite.com"
Фактический файл находится по адресу:
/home/me/live/mysite_home/live/mypage.erb
Файл конфигурации:
server {
listen 80;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;
location /mypage {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
}
}
server {
listen 443;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;
ssl on;
ssl_certificate /etc/nginx/conf/certs/server.crt;
ssl_certificate_key /etc/nginx/conf/certs/server.key;
keepalive_timeout 70;
location /mypage {
auth_basic "Restricted";
auth_basic_user_file htpasswd;
}
}
Не уверен, что это Sinatra, Passenger или Nginx, или я просто что-то упускаю.
2 ответа
Просто нужно добавить
passenger_enabled on;
Внутри блока местоположения
server {
listen 80;
server_name mysite.com;
root /home/me/live/mysite_home/public;
passenger_enabled on;
location /mypage {
passenger_enabled on;
auth_basic "Restricted";
auth_basic_user_file htpasswd;
}
}
Doh!
Фактический файл находится по адресу:/home/me/live/mysite_home/live/mypage.erb
Файл конфигурации: root /home/me/live/mysite_home/public;
В файле конфигурации указывается каталог "public" в пути. Хотя фактический путь к файлу не содержит этого. Это опечатка?