Nginx通过密码保护我们未公开的网站

2014年04月01日

有些时候,我们的网站服务器虽然架设起来了,但是还需要完善或者等待指定日期公开,那么就需要通过密码保护我们的网站了。

这里将介绍如何在Nginx网站服务器上简单保护未公开的网站,

要的结果是这样的:

20140401

步骤如下:

1. 编辑/etc/nginx/conf.d/default.coonf

找到 location / {},在最下面添加两行 auth_basic “Restricted Area”; auth_basic_user_file /etc/nginx/conf.d/.htpasswd;

    #access_log  logs/host.access.log  main;

    location / {
        #root   /usr/share/nginx/html;
        root   /var/www/html/html;
        index  index.php index.html index.htm;
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
    }

注意,这里我们修改的是conf.d/default.php, 您的网站服务器的配置文件有可能不是此文件,可能会是上一节目录的nginx.conf, 或者其他,
视您的具体情况而定。

2. 接下来通过apache2-utils的htpasswd命令创建用户名与密码

# cd /etc/nginx/conf.d/
# touch .htpasswd
# htpasswd -b .htpasswd your-username your-password

centos6.4默认安装了apache2-utils,如果出现htpasswd命令错误,请确认是否安装了apache2-utils。

CentOS6.5 默认没有安装apache2-utils,我们可以通过以下方法加密密码

# cd /etc/nginx/conf.d/
# touch .htpasswd
# printf "your-username:$(openssl passwd -1 your-password)\n" >> .htpasswd

以上为MD5加密,也可以通过别的方式加密。

# 用crypt encryption方式加密

# printf "your-username:$(openssl your-password -crypt V3Ry)\n" >> .htpasswd 

# 用apr1 (Apache MD5) encryption方式加密

# printf "your-username:$(openssl your-password -apr1 V3Ry)\n" >> .htpasswd 

3. 最后重新启动nginx,以使配置生效。

/etc/rc.d/init.d/nginx restart