一、apache服务实验
1、基于域名访问的虚拟主机
-
就是同一个ip地址,2个域名
-
就是访问a.com返回一个页面,访问b.com返回另外一个页面
[root@master conf.d]# pwd
/etc/httpd/conf.d
[root@master conf.d]# cat a.conf
<virtualhost 192.168.50.10:80> # 定义的虚拟主机documentroot /www/a # 定义的网页文件目录servername www.a.com # 定义的域名
</virtualhost><directory /www/a> # 定义关于这个目录的内容require all granted
</directory><virtualhost 192.168.50.10:80>documentroot /www/bservername www.b.com
</virtualhost><directory /www/b>require all granted
</directory>
- 创建文件和防火墙放行和selinux
mkdir /www/a -p
mkdir -p /www/becho a > a/index.html
echo b > b/index.html[root@master /]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
[root@master /]# restorecon -RFv /www
Relabeled /www from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /www/a from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /www/a/index.html from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /www/b from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /www/b/index.html from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0[root@master /]# firewall-cmd --permanent --add-service=http
success
[root@master /]# firewall-cmd --reload
success# 重启httpd服务
[root@master conf.d]# systemctl restart httpd
[root@master conf.d]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
- 客户端访问
# 客户端域名解析
[root@node1 ~]# echo "192.168.50.10 www.a.com" >> /etc/hosts
[root@node1 ~]# echo "192.168.50.10 www.b.com" >> /etc/hosts
[root@node1 ~]# curl www.a.com
a
[root@node1 ~]# curl www.b.com
b
2、基于端口和域名访问的虚拟主机
- 就是根据不同的端口访问得到不同的页面
[root@master conf.d]# cat a.conf
Listen 8080 # 定义一个端口
<virtualhost 192.168.50.10:8080> # 相当于是这个主机发布的一个网站documentroot /www/aservername www.a.com
</virtualhost><directory /www/a>require all granted
</directory>Listen 8081
<virtualhost 192.168.50.10:8081>documentroot /www/bservername www.b.com
</virtualhost><directory /www/b>require all granted
</directory>
- 添加2个端口,标签类型为httpd
# 添加2个端口
[root@master conf.d]# semanage port -a 8080 -t http_port_t -p tcp
Port tcp/8080 already defined, modifying instead
[root@master conf.d]# netstat -pant|grep 8080
[root@master conf.d]# semanage port -a 8081 -t http_port_t -p tcp
Port tcp/8081 already defined, modifying instead# 防火墙放行
[root@master conf.d]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@master conf.d]# firewall-cmd --permanent --add-port=8081/tcp
success
[root@master conf.d]# firewall-cmd --reload
success
- 客户端访问
[root@node1 ~]# curl www.a.com:8080
a
[root@node1 ~]# curl www.a.com:8081
b
[root@node1 ~]# curl www.b.com:8081
b
3、搭建个人网站
- 个人网站配置文件
[root@master conf.d]# vim userdir.conf UserDir enabledUserDir public_html
- 创建用户网页文件
# 创建这个目录,标签会自动的改变
[root@master devops]# ll public_html/ -dZ
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_user_content_t:s0 24 Sep 9 20:58 public_html/# 其他用户要有权限访问才行
[root@master devops]# ll -d
drwx-----x. 6 devops devops 177 Sep 9 20:58 .
- selinux放行
semanage boolean -l | grep homesetsebool -P httpd_enable_homedirs on
- 客户端访问
http://192.168.50.10/~devops
4、加密访问+显示自定义网页内容
- 也就是通过443端口访问
1)安装加密的包
[root@controller conf.d]# yum -y install mod_ssl
2)生成私钥
#genrsa 就是generate产生一个rsa的私钥
[root@controller ~]# openssl genrsa > tlsweb.key
3)生成一个证书请求文件
[root@controller ~]# openssl req -new -key tlsweb.key > tlsweb.csr
req ---就是创建证书和管理证书的子命令-new --就是创建一个新的csr-key 就是基于这个密钥来创建一个证书请求文件
4)生成一个证书文件
[root@controller /]# openssl req -x509 -days 365 -in tlsweb.csr -key tlsweb.key > tlsweb.crt-x509 就是将请求文件转换成一个自签证书文件
-days 证书保存时间
-in 用到的证书请求文件
-key 用到的私钥文件
5)移动到存放私钥和证书的文件的路径和修改加密的文件
[root@controller tls]# cp /root/tlsweb.key ./private/
[root@controller tls]# cp /root/tlsweb.crt certs/
修改加密文件SSLCertificateFile /etc/pki/tls/certs/tlsweb.crt
SSLCertificateKeyFile /etc/pki/tls/private/tlsweb.key
6)防护墙和selinux的放行
[root@controller /]# firewall-cmd --permanent --add-port=443/tcp
[root@controller /]# firewall-cmd --reload#证书的selinux类型一致
[root@controller tls]# ll -Z
total 16
lrwxrwxrwx. 1 root root system_u:object_r:cert_t:s0 49 Jun 23 2020 cert.pem -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
drwxr-xr-x. 2 root root system_u:object_r:cert_t:s0 72 Dec 24 15:09 certs
-rw-r--r--. 1 root root system_u:object_r:cert_t:s0 412 Mar 26 2021 ct_log_list.cnf
drwxr-xr-x. 2 root root system_u:object_r:cert_t:s0 6 Mar 26 2021 misc
-rw-r--r--. 1 root root system_u:object_r:cert_t:s0 11225 Mar 26 2021 openssl.cnf
drwxr-xr-x. 2 root root system_u:object_r:cert_t:s0 24 Dec 24 15:09 private
[root@controller tls]#
7)重启httpd服务
8)访问
出现了不能连接的话,就是防护墙的问题https://192.168.10.110点击高级选项,接受,显示的就是红帽官网的内容
自定义网页内容的文件
1)就是在conf.d这个目录下创建一个文件
<virtualhost 192.168.10.110:443>documentroot /www/sslSSLEngine on # 开启ssl功能SSLCertificateFile /etc/pki/tls/certs/tlsweb.crt # 请求文件SSLCertificateKeyFile /etc/pki/tls/private/tlsweb.key # 私钥文件路径
</virtualhost>
<directory /www/ssl>require all granted
</directory>
2)创建网页内容的文件
[root@controller www]# mkdir ssl
[root@controller www]# ls
8088 8089 a b sss
[root@controller www]# echo "welcome ssl" >> ssl/index.html
[root@controller www]#
3)访问
就能显示加密后的网页内容了