需求: 给虚拟主机增加登录验证,具体操作如下:
server {
listen 80; #监听的端口
server_name www.a.com; #域名
#charset koi8-r; #可以支持中文输入 #需要改成utf8
#access_log logs/host.access.log main;
location / { #匹配项
root html; #网页根目录
index index.html index.htm; #默认读取的文件
}
auth_basic "input password"; #加密提示信息
auth_basic_user_file "/usr/local/nginx/pass"; #加密文件
}
#使用此功能需要在源码编译安装时加入 --with-http_ssl_module模块
#需要安装 httpd-tools rpm包
htpasswd -c /usr/local/ngin/pass tom 指定密码文件和加密文件的输入完毕后会提示让你输入password 需要输入两次 ,输入完毕重启nginx服务就可以去测试了
输入你之前设置的域名 就会出现一个弹窗,大概是这个样子,会根据浏览器版本提供不同的登录界面,输入你刚才设置的用户和密码就可以正常登录了
2.接下来就是最开心的排错环节1 重启服务的时候提示 nginx: [emerg] unknown directive "auth_basic_usr_file" in /usr/local/nginx/conf/nginx.conf:48 这种直接是最简单的报错直接写了出来 在配置文件的第48行“auth_basic_user_file" usr那里少了个e。
2..这种 nginx: [emerg] invalid number of arguments in "auth_basic_user_file" directive in /usr/local/nginx/conf/nginx.conf:53 就是编译安装的时候没有加ssl模块具体模块名称看代码块的注释也可以在编译的时候./configure --help 查看帮助文档里面有模块的名称和模块的作用
3.nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)这种就是端口被占用 可能运行了别的web服务比如http 把http关掉再开就可以了
4.打开网页没有弹窗提示 排错思路为/etc/hosts是否配置了域名解析
有没有htpasswd -c 指定登录用户和文件放置的地址
指定的文件是否放错了地方没有放在配置文件里配置的放置目录



