项目需要必须提供用户名及密码才能访问站点,所以google查询了一下,参见做了如下配置:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
<Directory /data/wwwroot/111.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
结果:网站500错误了,apache报错Unknown Authz provider: valid-user error,
又查了查,结果确认是因为版本问题,我的apache是2.4的,以上配置估计是2.2,所以出现错误了,帖出2.4的正常配置如下:
<VirtualHost *:80>
ServerName www.test.com
DocumentRoot /var/www/html/test
<Directory /var/www/html/test>
#Options Indexes FollowSymLinks MultiViews
#AllowOverride AuthConfig
AllowOverride All
Order allow,deny
allow from all
<RequireAny>
#指定某路径不需要输入用户密码
#SetEnvIf REQUEST_URI "^/(admin|secure)/" PROTECTED
#<RequireAll>
#Require not env PROTECTED
#Require all granted
#</RequireAll>
<RequireAll>
AuthType Basic
AuthName "Vaild"
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
</RequireAll>
</RequireAny>
</Directory>
</VirtualHost>
备注:以上配置放到网站根目录下的.htaccess也是可以,但,我比较喜欢放apache的配置文件里面,另外:也有可能需要启用以下模块
sudo a2enmod authz_user
最后感谢以下网址提供的参考:https://www.the-art-of-web.com/system/apache-authorization/