RHCE——HTTPD分类实验
一、基于自定义配置文件的虚拟主机
- 先进入此路径下/etc/httpd/conf.d
[root@localhost ~]# cd /etc/httpd/conf.d/
- 通过vim修改host.conf的配置添加一下内容
[root@localhost conf.d]# vim host.conf
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 192.168.100.147:80>
servername 192.168.100.147
documentroot /www/147
</virtualhost>
- 创建目录并输入内容
[root@localhost conf.d]# mkdir /www/147 -p
[root@localhost conf.d]# echo welcome to 147 > /www/147/index.html
- 重启httpd服务并关闭防火墙进行测试
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]# systemctl stop firewalld
[root@localhost conf.d]# setenforce 0
二、基于ip的多虚拟主机
-
ip a查看本机ip地址
-
添加一个新的ip地址并启用
[root@localhost ~]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# nmcli connection modify ens160 +ipv4.address 192.168.100.148/24
[root@localhost conf.d]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
- 通过vim修改host.conf的配置
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于自定义
<virtualhost 192.168.100.147:80>
servername 192.168.100.147
documentroot /www/147
</virtualhost>
#基于ip的多虚拟主机
<virtualhost 192.168.100.148:80>
servername 192.168.100.147
documentroot /www/148
</virtualhost>
- 创建/www/148目录并输入内容
[root@localhost conf.d]# mkdir /www/148 -p
[root@localhost conf.d]# echo welcome to 148 > /www/148/index.html
- 重启httpd服务并测试
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]# systemctl stop firewalld
三、基于端口的多虚拟主机
- 配置host.conf
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于自定义
<virtualhost 192.168.100.147:80>
servername 192.168.100.147
documentroot /www/147
</virtualhost>
#基于端口的多虚拟主机
<virtualhost 192.168.100.147:90>
servername 192.168.100.147
documentroot /www/90
</virtualhost>
<virtualhost 192.168.100.147:91>
servername 192.168.100.147
documentroot /www/91
</virtualhost>
listen 90
listen 91
·listen用于监听端口
- 创建/www/90、/www/91目录并输入内容(略)
- 重启httpd服务并测试
四、基于主机名的多虚拟主机
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于主机名的多虚拟主机
<virtualhost 192.168.100.147:80>
servername www.aa.com
documentroot /www/aa
</virtualhost>
<virtualhost 192.168.100.147:80>
servername www.bb.com
documentroot /www/bb
</virtualhost>
五、基于https协议的加密虚拟主机
- 下载支持https的模块
[root@localhost conf.d]# dnf install mod_ssl -y
-
将Makefile文件传送到虚拟机内并确保在/etc/pki/tls/certs目录下

.....+++++
...........................................+++++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key haha.key -x509 -days 365 -out haha.crt
Enter pass phrase for haha.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86
State or Province Name (full name) []:chongqing
Locality Name (eg, city) [Default City]:yongchuan
Organization Name (eg, company) [Default Company Ltd]:chengke
Organizational Unit Name (eg, section) []:devops
Common Name (eg, your name or your server's hostname) []:www.haha.com
Email Address []:admin@haha.com
(Country Name到Organizational Unit Name 都可以随便填)
- 把钥匙放到默认路径
[root@kittod certs]# mv haha.key ../private/
- 在/etc/httpd/conf.d路径下修改host.conf文件
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于用户认证的虚拟主机
<virtualhost 192.168.100.147:443>
servername www.haha.com
documentroot /www/haha
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/haha.crt
SSLCertificateKeyFile /etc/pki/tls/private/haha.key
</virtualhost>
- 重启服务并测试访问
六、基于用户认证的虚拟主机(此实验有错待改善)
- 创建用户账号及密码
[root@localhost conf.d]# htpasswd -c /etc/httpd/zhangsan abc
New password:
Re-type new password:
Adding password for user abc
[root@localhost conf.d]# vim /etc/httpd/zhangsan
[root@localhost conf.d]# htpasswd /etc/httpd/zhangsan tom
New password:
Re-type new password:
Adding password for user tom
- 配置host.conf文件内容
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于用户认证的虚拟主机
<directory /usr/local/mysecret>
authtype basic
authname "This is a private directory,Please Login: "
authuserfile /etc/httpd/zhanghao
require user abc tom
</directory>
<virtualhost 192.168.100.147:80>
servername www.haha.com
alias /mysecret /usr/local/mysecret
documentroot /www/haha
</virtualhost>
- 创建目录
[root@localhost conf.d]# mkdir /usr/local/mysecret/
- 输入内容
[root@localhost conf.d]# echo This is mysecret > /usr/local/mysecret/index.html
- 重启服务并测试
[root@localhost conf.d]# systemctl restart httpd
七、基于python的动态虚拟主机
- 安装python模块
[root@localhost conf.d]# dnf install python3-mod_wsgi -y
- 脚本内容
[root@localhost conf.d]# cat /var/www/cgi-bin/helloworld.wsgi
def application(environ, start_response):
status = '200 OK'
output = b'Hello world'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
- 配置文件
[root@localhost conf.d]# cat host.conf
<directory /www>
allowoverride none
require all granted
</directory>
#基于python的动态虚拟主机
<virtualhost 192.168.100.147:80>
servername www.haha.com
WSGIScriptAlias / /var/www/cgi-bin/helloworld.wsgi
</virtualhost>
- 重启服务并测试
[root@localhost conf.d]# systemctl restart httpd