使用nginx限制访问

时间:2014-08-12 18:29:26

标签: authentication nginx

我无法使用nginx来查看我的网站。我想知道是否有人可以帮忙。

我使用htpasswd创建了一个密码。它创建了一个名为htpasswd的文件,它存储在Conf / / nginx.conf

旁边

Conf目录是hello_world的兄弟姐妹,以及scta路径中所见的root文件夹的子代。

重新启动服务器后,我的浏览器会要求我输入密码。我输入信息,对话框消失,浏览器只是说没有授权。之后,浏览器甚至没有给我机会重新输入我的用户名和密码。

我不确定我做错了什么。

更新,我意识到我实际上已成功通过,因为当我输入错误的密码时,我收到401错误。但是当我输入正确的密码时,我正在移动401错误而不是403错误。

server {
        listen             28005;
        passenger_enabled  on;
        root               /home/me/app/scta/hello_world/public;
        server_name        localhost;
        location / {
            auth_basic "closed site";
                auth_basic_user_file conf/htpasswd;
                }

    }

}

1 个答案:

答案 0 :(得分:0)

您必须检查remote_user是否存在,如果它存在,则表示它已经过身份验证,因此假设用户是&#34; admin&#34;,您将执行以下检查。< / p>

server {
    listen             28005;
    passenger_enabled  on;
    root               /home/me/app/scta/hello_world/public;
    server_name        localhost;
    location / {
        auth_basic "closed site";
        auth_basic_user_file conf/htpasswd;
        if ($remote_user ~ ^$) { break; }
        set $ok "no";
        if ($remote_user = 'admin') { set $ok "yes"; }
        if ($ok != "yes") {
            return 403;
        }
    }
}