2019-03-28 HTTPD/Apache2 增加密碼控制訪問

如果希望將某些或所有網站限制僅允許特定用戶或組訪問,使用HTTP Auth(基於apache2)方式很容易實現。
一、在CentOS上,httpd的配置文件默認在/etc/httpd/conf/httpd.conf文件,

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
# 下面這3行是默認的,可以直接改,或者註釋掉
#    AllowOverride ALL
#    Order allow,deny
#    Allow from all
# 改成下面這樣
    AllowOverride authconfig
    Order allow,deny
    Allow from all
    AuthName "Web Access"
#名字隨意
    AuthType Basic
    AuthUserFile /var/www/html/.htpasswd
#認證文件名字和位置和下面生成的要一致
    Require valid-user
</Directory>

這裏存放用戶密碼的文件就是.htpasswd, 位置和名稱可以改。
生成用戶密碼文件:

htpasswd -c /var/www/html/.htpasswd <username>
#創建第一個認證用戶的時候用-c,其他用戶要把-c去掉,否則會被覆蓋掉
重啓httpd服務即可
systemctl restart httpd

也可使用用戶組來控制,也是編輯httpd配置文件,這裏不寫了。
二、Ubuntu的apache配置文件編輯/etc/apache2/sites-enabled/目錄下的文件,根據虛擬站點有不同的名稱,比如我的nagios配置文件就叫nagios.conf,看起來是這樣子的:

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
#  SSLRequireSSL
   Options None
   AllowOverride None
   <IfVersion >= 2.3>
      <RequireAll>
         Require all granted
#        Require host 127.0.0.1
         AuthName "Nagios Access"
         AuthType Basic
         AuthUserFile /usr/local/nagios/etc/htpasswd.users
         Require valid-user
      </RequireAll>
   </IfVersion>
 <IfVersion < 2.3>
      Order allow,deny
      Allow from all
     Order deny,allow
     Deny from all
      AuthName "Nagios Access"
      AuthType Basic
      AuthUserFile /usr/local/nagios/etc/htpasswd.users
      Require valid-user
   </IfVersion>
</Directory>

Ubuntu如果默認沒有安裝htpasswd工具的話,要先安裝apache2-utils包:
sudo apt install apache2-utils
生成用戶密碼的用法和CentOS是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章