一、查看当前系统参数
[root@~ ~]$ uname -r 3.10.0-229.el7.x86_64 [root@~ ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo) [root@~ ~]$
二、编辑虚拟主机配置文件
打开conf/nginx.conf文件找到vhost的配置,然后在server内添加下面的指令:
## 下面是针对目录的设置 server { listen 80; //监听端口为80 server_name blog.hexu.org; //虚拟主机网址 location / { auth_basic "Authorized, welcome to report system."; auth_basic_user_file /data/sites/vhost/z.htpasswd.db; } ...... ...... } ## 下面是全局的设置 server { listen 80; //监听端口为80 server_name blog.hexu.org; //虚拟主机网址 auth_basic "Authorized, welcome to report system."; auth_basic_user_file /data/sites/vhost/z.htpasswd.db; ...... ...... }
解释:
auth_basic: 指令包含一个具有测试用户名和密码的HTTP基本认证,指定的参数将用于认证域。如果将值设置为“off”则忽略下级指令继承的动作。
auth_basic_user_file: 指令为验证域指定了密码文件,0.6.7版本以后这里指定的文件是nginx.conf所在目录的相对路径,而不是–prefix指定的路径。
“Authorized, welcome to report system.” 单词将会出现在第一次访问Nginx站点的弹出框内。
/data/sites/vhost/z.htpasswd.db 是一个文件,可以按你的习惯放于任何位置。
三、创建z.htpasswd.db内容
/** 通过下面PHP代码生成,直接复制粘贴到 “/data/sites/vhost/z.htpasswd.db”即可。**/ <?php if(3 !== count($argv)) { die("\n########\n\nPlease input format: php {htpasswd.gen...php} username password\n\n########\n"); } $username = $argv[1]; $password = $argv[2]; // 对密码进行加密 $password = crypt($password, base64_encode($password)); // 获得加密后的密码 echo "\n######username:pasword#######\n\n" . $username.':'.$password . PHP_EOL; echo "\n#############################\n";
将上面代码保存成z.htpasswd.generation.php文件, 然后使用php命令执行即可:
[root@~ ~]$ /usr/local/php/bin/php z.htpasswd.generation.php username password ######username:pasword####### username:cGyUX9QugYMgE #############################
四、重新加载Nginx 的新配置 既生效
systemctl reload nginx