代码之家  ›  专栏  ›  技术社区  ›  Vincent

Nginx和Phusion乘客上运行的密码保护轨站点

  •  10
  • Vincent  · 技术社区  · 14 年前

    我想用基本的http身份验证来保护我新部署的Rails 3应用程序。它运行在最新的Nginx/Passenger上,我使用以下Nginx指令来保护web根目录:

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

    htpasswd文件是使用Apache htpasswd实用程序生成的。但是,在输入正确的用户名和密码后,我将被转移到403禁止的错误页面。分析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 回复  |  直到 14 年前
        1
  •  17
  •   Hongli    14 年前

    您需要在位置块中重新指定启用的乘客。

        2
  •  6
  •   edgerunner    14 年前

    你可以 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
    

    你也应该设定 config.serve_static_assets = true 在你的 environment.rb (或 applicaion.rb 在Rails 3)中,使静态资产 public 通过相同的过滤器。

        3
  •  2
  •   icanhasserver    14 年前

    检查Nginx错误日志。 403 意思是你的密码文件路径不对。