Nginx提供一个HTTP Auth Basic模块,采用HTTP基本身份验证的用户名密码登录方式来保护主机, 实现方法为在网站配置文件中增加以下两行:
auth_basic "TEST PASSWORD"; ####引号之间填写提示语 auth_basic_user_file /alidata/www/test/passwd.db; #####写上密码的文件
比如,以阿里云一键安装包中的nginx配置文件举例 路径是:/alidata/server/nginx/conf/vhosts/ 配置文件具体内容:
[root@test vhosts]# cat test.conf server { listen 80; server_name www.test.com; ###网站的域名 index index.html index.htm index.php; root /alidata/www/test; ###网站的路径 location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } auth_basic "TEST PASSWORD"; ####引号之间填写提示语 auth_basic_user_file /alidata/www/test/passwd.db; #####写上密码的文件
access_log /alidata/log/nginx/access/test.log; ####日志路径 }
之后需要通过htpasswd命令创建账号密码,-c选项后的passwd.db是密码文件,要和nginx配置文件中auth_basic_user_file实际的文件相同 格式是:
htpasswd -c passwd.db username 之后会提示输入密码
很多nginx中没有这个htpasswd命令,则可以通过创建一个perl的文件来生成密码,方法是: 创建一个名为htpasswd.pl的加密密码生成文件, 内容为: #! /usr/bin/perl use strict; my $pw=$ARGV[0]; print crypt($pw,$pw)."\n";
之后增加权限 :chmod +x htpasswd.pl 执行命令: ./htpasswd.pl 密码 将生成加密的密码写到密码文件,可以用vi,也可以用echo方法。 创建后最好将密码文件通过chmod 640 passwd.db 把生成的文件修改权限。
密码文件格式是: 账号:加密密码 比如: user:teH0wLIpW0gyQ
具体步骤可以参考下图:
创建后访问网站时会提示如下信息,输入正确账号密码后,才能进入网站。 (责任编辑:IT) |