apache详细配置

一、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/b
  servername www.b.com
</virtualhost>

<directory /www/b>
  require all granted
</directory>


  • 创建文件和防火墙放行和selinux

mkdir /www/a -p
mkdir -p /www/b

echo 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/a
  servername www.a.com
</virtualhost>

<directory /www/a>
  require all granted
</directory>


Listen 8081
<virtualhost 192.168.50.10:8081>
  documentroot /www/b
  servername 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 enabled
     UserDir 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 home

setsebool -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/ssl
 SSLEngine 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)访问

就能显示加密后的网页内容了  

总结

  • 基于域名来访问,也就是一个服务器(一个虚拟机),不同的域名访问显示不同的网页文件

  • 基于端口来进行访问

  • 还有个人加密访问

posted @ 2025-09-09 21:24  乔的港口  阅读(17)  评论(0)    收藏  举报