更多技术干货尽在公众号【学神来啦】!
实现 Apache 打开软链接功能-禁止显示目录列表-用户认证
当一个目录下没有默认首页时,访问 http://192.168.1.63/phpdata/禁止显示目录列表显示目录的效果:
[root@xuegod63 ~]# cp -r /boot/grub/ /var/www/html/bbs/
[root@xuegod63 ~]# ll /var/www/html/bbs/
总用量 16
drwxr-xr-x. 2 root root 27 2 月 2 2018 grub
-rw-r--r-- 1 root root 26 11 月 19 10:22 index.html
[root@xuegod63 ~]# rm -rf /var/www/html/bbs/index.html
[root@xuegod63 ~]# vim /etc/httpd/conf/httpd.conf
# Require all granted #取消注释
<RequireALL> #注释以下 4 行
Require ip 192.168.1.63
Require not ip 192.168.1.103
</RequireALL>
[root@xuegod63 ~]# systemctl restart httpd
当网站没有默认的首页的时候,直接访问显示网站更目录下的文件夹资源
注意:以上的操作实际上是恢复了 Apache 的原来配置,Apache 默认为网站目录下可以浏览文件
夹资源。
取消网站目录下浏览文件夹资源
修改配置文件:
[root@xuegod63 ~# vim /etc/httpd/conf/httpd.conf # 修改红色标记内容
改:144 Options Indexes FollowSymLinks
为:144 # Options Indexes FollowSymLinks
[root@xuegod63 ~]# systemctl restart httpd
通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护
设置/usr/local/phpdata/目录,只能通过用户名密码方式访问。
[root@xuegod63 ~]# vim /etc/httpd/conf/httpd.conf
在需要使用用户验证的目录的相关 Directory 段落添加以内容:
Alias /phpdata/ "/usr/local/phpdata /"
<Directory "/usr/local/phpdata /">
Options Indexes FollowSymLinks
AllowOverride None
#Require all granted #注释此行,并加入以下 4 行内容
authtype basic
authname "my web site"
authuserfile /etc/httpd/conf/passwd.secret
require valid-user
</Directory>
参数说明:
authtype basic
authtype 命令:指定认证类型为:basic。
authname "my web site "
AuthName 命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。
authuserfile /etc/httpd/conf/passwd.secret
AuthUserFile 命令:指定一个包含用户名和密码的文本文件,每行一对。
require 命令
指定哪些用户或组才能被授权访问。如:require user user1 user2 (只有用户 user1 和user2 可以访问)
require valid-user (在 AuthUserFile 指定的文件中任何用户都可以访问)
利用 Apache 附带的程序 htpasswd,生成包含用户名和密码的文本文
命令格式:htpasswd –cm 存放用户名和密码的文件名 用户名
[root@xuegod63 ~]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
注意:
第一个生成用户名和密码,需要创建文件,因此需要加-c 参数
第二次创建用户,不能用-c,否则会把前面的用户覆盖了
[root@xuegod63 phpdata]# htpasswd -h #查看参数
-c:创建新文件(Create a new file.)
-m:强制对密码进行 MD5 加密(Force MD5 encryption of the password.)
[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob
New password: 123456
Re-type new password: 123456
Adding password for user bob
[root@xuegod63 conf]# cat /etc/httpd/conf/passwd.secret #查看密码文件内容
tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.
bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0
测试:
[root@xuegod63 ~]# systemctl restart httpd
http://192.168.1.63/phpdata/
Apache 虚拟主机基于-IP-域名-端口三种搭建方式
配置 Apache 虚拟主机,实现在一台服务器上运行多个网站
Apache 虚拟主机实现有三种方法:
1、通过不同的 IP 地址
2、通过不同的域名
3、通过不同的端口号
三种都需要把虚拟主机功能打开:
方法一:
通过不同的 IP 地址,解析不同域名
给服务器增加 IP(另一个域名解析出来的那个 IP)。
[root@xuegod63 ~]# ifconfig ens33:1 192.168.1.62 netmask 255.255.255.0
[root@xuegod63 ~]# echo "bbs.xuegod.cn"> /var/www/html/bbs/index.html
[root@xuegod63 ~]# cd /etc/httpd/conf.d/
创建虚拟主机的配置文件:
[root@xuegod63 conf.d]# vim bbs.conf
<VirtualHost 192.168.1.63:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.164:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
测试:
[root@xuegod63 conf]# systemctl restart httpd
[root@xuegod63 conf.d]# curl 192.168.1.63
welcome to www.xuegod.cn!
[root@xuegod63 conf.d]# curl 192.168.1.62
bbs.xuegod.cn
方法二:
通过不同域名:(这种访问在企业比较常见,其他两种访问可以了解下即可)
在域名管理后台,修改 DNS 配置,www.xuegod.com 与 bbs.xuegod.com 解析成相同的 IP。
[root@xuegod63 conf.d]# vim bbs.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/
ServerName www.xuegod.com
ErrorLog logs/www.xuegod.com-error_log
CustomLog logs/www.xuegod.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/bbs/
ServerName bbs.xuegod.com
ErrorLog logs/bbs.xuegod.com-error_log
CustomLog logs/bbs.xuegod.com-access_log common
</VirtualHost>
配置文件修改最终如图下:
[root@xuegod63 conf.d]# systemctl restart httpd
[root@xuegod63 conf.d]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 www.xuegod.com
192.168.1.63 bbs.xuegod.com
测试:
[root@xuegod63 conf.d]# curl www.xuegod.com
welcome to www.xuegod.cn!
[root@xuegod63 conf.d]# curl bbs.xuegod.com
bbs.xuegod.cn
修改本地 Windows 的 hosts 文件,可以实现在浏览器上用域名访问:
方法 3:基于端口配置虚拟主机:
[root@xuegod63 conf.d]# vim /etc/httpd/conf/httpd.conf
42 Listen 80 #在此行下添加监听 81 号端口
43 Listen 81
[root@xuegod63 conf]# vim /etc/httpd/conf.d/bbs.conf
改:8 <VirtualHost *:80>
为:8 <VirtualHost *:81> #此处修改的端口,在 apache 的主配置文件需要有监听端口
更改为要添加的多个端口
[root@xuegod63 conf.d]# systemctl restart httpd
[root@xuegod63 conf.d]# curl bbs.xuegod.com:81
bbs.xuegod.cn
[root@xuegod63 conf.d]# curl www.xuegod.com
welcome to www.xuegod.cn!