10

Yeni dağıtılan Rails 3 uygulamasını temel http kimlik doğrulamasıyla korumak istiyorum. Son Nginx/Yolcu üzerinde çalışan ve ben web kök dizini korumak için aşağıdaki Nginx yönergesini kullanıyorum:Nginx ve Phusion Yolcuları üzerinde çalışan Rayları koruyan Şifre sitesi

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

htpasswd dosyası Apache htpasswd utililty kullanılarak oluşturulmuştur. Ancak, doğru kullanıcı adı ve şifreyi girdikten sonra 403 Yasak hata sayfasına aktarıldım.

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" 

Açıkçası, mysite/kamu dizinin içeriğini listelemek istemiyorum: Analiz Nginx hata günlüğü ortaya çıkardı. Giriş bilgilerimi girdikten sonra Rails uygulamasının başlaması için bunu doğru şekilde nasıl yapılandırabilirim?

cevap

17

location_enabled konumunu konum bloğunda yeniden belirtmeniz gerekir.

+4

"passenger_enabled açık" ifadesini ekleyin. konum bloğu içinde. –

+0

NginX'i yeniden yüklemek yerine yeniden başlattığınızdan emin olun: 'sudo /etc/init.d/nginx restart' – Hengjie

2

Nginx hata günlüğünü kontrol edin. 403, parola dosyanızın yolunu yanlış anladığınız anlamına gelir.

+0

Yol hatalı olduğunda [hata] 19756 # 0: * 1 açık() "/ opt/nginx/conf/htpasswd" başarısız oldu (2: Böyle bir dosya veya dizin yok). Eminim ki şimdi yolum doğru. – Vincent

+0

Günlüğünüzde başka hata var mı? Şifrelerinizi crypt() biçiminde oluşturdunuz (Nginx onları desteklemediği için MD5 değil)? – icanhasserver

6

Sen let Rails handle the authentication

# application_controller.rb 
before_filter :authenticate 

protected 

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

ayrıca içinde config.serve_static_assets = true belirlesin edebilirsiniz environment.rb (Rails veya applicaion.rb 3) public statik varlıklar aynı filtreden geçmesi böylece.