Nginx - 密码保护不起作用

时间:2012-09-17 22:21:53

标签: nginx

我已按照说明操作,但仍无法密码保护我的网站。这就是我的app-nginx.config的样子:

server {
    listen       80;
    server_name  Server_Test;
    auth_basic            "Restricted";
    auth_basic_user_file  /usr/local/nginx/conf/htpasswd;

...

}

我哪里错了?我从教程网站复制并粘贴了这个。

2 个答案:

答案 0 :(得分:15)

确保Nginx可以访问密码文件。 auth_basic_user_file的路径相对于nginx.conf目录。因此,如果nginx.conf位于/usr/local/nginx,您可以将指令更改为:

auth_basic_user_file  conf/htpasswd;

并且文件必须是可读的。

  

此文件应该是工作人员可读的,从非特权运行   用户。 E. g。当nginx从www运行时,您可以将权限设置为:

chown root:nobody htpasswd_file
chmod 640 htpasswd_file

- 来自http://wiki.nginx.org/HttpAuthBasicModule

答案 1 :(得分:7)

让我的nginx服务器工作,甚至配置它以保护我的根文件夹访问。我想与您分享我的发现,并且在此过程中也会对本页中的问题给出一个良好且有效的答案。

作为nginx的新用户(版本1.10.0 - Ubuntu)。 我遇到的第一个问题是知道文件位置,所以这里是关键位置:

了解您的位置:

主文件夹位置:/etc/nginx

默认网站位置:/var/www/甚至/ver/www/html/html文件夹内的 index.html 文件 - 希望您知道该怎么做那里。)

配置文件:

主要配置文件:/etc/nginx/nginx.conf

当前网站服务器 conf:/etc/nginx/sites-enabled(首次安装时,其中有一个名为default的文件,您需要使用{{ 1}}能够改变它(例如: sudo

添加密码:

所以,既然知道了玩家(无论如何都是静态的开箱即用网站),让我们把一些文件放在' html'文件夹,并为其添加密码保护。

要设置密码,我们需要做两件事: 1.创建一个密码文件(拥有尽可能多的用户,但我会以1结算)。 2.配置当前服务器('默认')以限制此页面并使用1中的文件启用密码保护。

<强> 1。让我们创建一个密码:

我想用的内容是: sudo vi default(您将获得输入并重新输入密码的提示),您可以在一行中执行此操作: sudo htpasswd -c /etc/nginx/.htpasswd john

我将解释命令的每个部分:

  • sudo htpasswd -c /etc/nginx/.htpasswd john [your password] - 使用更高的权限执行此操作。
  • sudo htpasswd - for:创建文件(将另一个用户添加到现有用户跳过此参数)
  • -c - 创建的文件的名称 (&#39; .htpsswd&#39;在文件夹/ etc / nginx中)
  • /etc/nginx/.htpasswd是用户的名称(要在提示的&#39;用户&#39;字段中输入)
  • john是此特定用户名所需的密码。 (当提示..)

通常password命令对您不起作用,因此您必须安装它的软件包:

使用:htpasswd(如果失败,请尝试使用sudo apt-get install apache2-utils然后重试)

<强> 2。让我们配置服务器以使用此文件进行身份验证

让我们使用此行编辑当前(默认)服务器配置文件:

sudo apt-get update(你不必使用&#39; vi&#39;但我喜欢它..)

删除大部分注释(#)

后文件如下所示
sudo vi /etc/nginx/sites-enabled/default

我们需要在块内添加两行(&#39; /&#39;指向站点的根文件夹),所以它看起来像这样:

# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

}

我将解释这些新行:

  • location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; } - 定义访问管理的类型
  • auth_basic "Restricted Content"; - 将我们创建的文件(/etc/nginx/.htppasswd)定义为此身份验证的密码文件。

让我们重启服务并享受受密码保护的网站:

auth_basic_user_file /etc/nginx/.htpasswd;

Viola - 享受......

以下是一些更好的教程:

Very good explanation

Another goo tutorial