项目需要必须提供用户名及密码才能访问站点,所以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/