如果希望將某些或所有網站限制僅允許特定用戶或組訪問,使用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是一樣的。