Part3.3——Apache的管理及优化

一、Apache的作用

在web被访问时通常使用<http://>的方式,<http://>是一种超文本传输协议。apache是提供这种传输协议的软件。

http:// 超文本传输协议提供软件有:
Apache、nginx、stgw、jfe、Tengine

二、Apache的安装

dnf install httpd.x86_64 -y         #安装apache软件

三、Apache的启用

Apache的启用主要分为两步:1、永久开启httpd服务;2、允许http和https服务通过火墙

systemctl enable --now httpd                     #开启服务并设置开机启动
firewall-cmd  --list-all                          #查看火墙信息
firewall-cmd  --permanent  --add-service=http     #在火墙中永久开启http访问(明文)
firewall-cmd  --permanent  --add-service=https    #在火墙中永久开启https访问(密文)
firewall-cmd  --reload                            #重新载入火墙配置

四、Apache的基本信息

服务名称httpd
配置文件

/etc/httpd/conf/httpd.conf        #主配置文件

/etc/httpd/conf.d/*.conf            #子配置文件

默认发布目录/var/www/html
默认发布文件index.html
默认端口

80                  #http

443                #https

用户apache
日志/etc/httpd/logs

五、Apache的基本配置

更改Apache配置需要更改其配置文件,并在每次更改完成后重启<httpd>服务令其生效。

vim /etc/httpd/conf/httpd.conf        #编辑httpd配置文件
systemctl restart httpd                #重启httpd服务

实验一:Apache端口修改

第一步:测试默认端口

在配置文件中编辑好一个“index.html”文件,在其他主机的浏览器中可以通过浏览器访问:

http://172.25.254.151            #默认通过80端口访问

就会默认通过80端口访问发布目录下的“index.html”文件。

第二步:修改配置文件中的端口

在配置文件的第45行左右,更改<Listen>后的参数,默认为80,默认为80端口,我们这里改为8080端口。

注意:Apache的端口只能是80或者8080,如果需要更改为其他端口,就需要修改Selinux的设置

第三步:重启服务并更改火墙配置

配置文件更改完成后,需要重启服务以及在火墙中增加8080端口

 第四步:测试新端口

http://172.25.254.151:8080        #指定端口访问

 更改完端口后,其他主机访问这个主机的网站后,在IP最后加上端口号就可以正常访问了。

实验二:默认发布文件的修改

第一步:修改配置文件

在httpd配置文件的第166行左右,原本默认的是“index.html”文件,即其他主机通过浏览器访问本机的默认文件,添加上“test.html”文件后,会先访问“test.html”文件,如果第一个文件不存在,会访问第二个文件。

第二步:重启httpd服务

第三步:测试

test.html文件存在时:

 test.html文件不存在时:

实验三:默认发布目录的更改

第一步:更改配置文件

第二步:重启httpd服务

第三步:测试

情况1:

新建指定目录,且目录下不存在任何文件。在其他主机通过浏览器访问时,会看到测试页

情况2:

 在该目录下新建<index.html>文件,但是在客户机无法访问。

 这是因为服务器的Selinux开启了,导致这个<index.html>文件的安全上下文不一致,所以此文件不能用于共享。所以接下来要改变这个目录的安全上下文,文件就可以通过远程来访问了。

改变目录及下属文件的安全上下文命令如下:

semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'      #修改目录及下属文件的安全上下文
restorecon -RvvF /www            #刷新该目录的安全上下文

 情况3:

在Selinux开启的情况下,共享文件的安全上下文不一致就会导致远程主机无法访问。如果不想这么麻烦,直接关闭Selinux就可以。

六、Apache的访问控制

1、基于客户端IP的访问控制

(1)IP白名单(先读禁止,再读允许)

第一步:在httpd的配置文件中添加如下几行命令

 第二步:测试

配置文件中是“禁止所有用户访问,但是允许50号主机访问”。在IP为<172.25.254.50>的主机上访问,访问被允许;而在另一台<172.25.254.150>的主机是被禁止的。

(2)IP黑名单(先读允许,再读禁止)

第一步:在httpd的配置文件中添加如下几行命令

第二步:测试

配置文件中是“允许所有用户访问,但是禁止50号主机访问”。在IP为<172.25.254.50>的主机上访问,访问被禁止;而在另一台<172.25.254.150>的主机是允许访问的。

2、基于用户认证的访问控制

第一步:编写用户认证文件

htpasswd -cm /etc/httpd/.htpasswd admin        #编写用户admin的认证文件

在<etc/httpd/.passwd>中新建一个用户为admin的认证文件,我这里为了测试,创建了三个用户。

注意:第一次创建文件时参数为<-cm>,之后如果再往里边加的话参数为<-m>;如果再用<-cm>则会覆盖之前的认证文件。

 第二步:更改配置文件

在配置文件中新增如下几行命令。其中方框框住的内容为二选一

 第三步:测试

(1)允许通过的认证用户

 重启httpd服务后,非允许用户,即使出现在认证名单里,也不能访问

 只有出现在认证名单里的且允许访问的用户“admin”可以访问。

 (2)允许所有用户通过

凡是出现在之前认证名单里的三个用户“admin、lee、westos”都可以通过认证;名单之外的人不能通过认证。

七、Apache的虚拟主机

第一步:实验准备

在150号机上创建两个虚拟主机的目录及默认发布文件。

第二步:编写<vshost.conf>配置文件

第三步:重启httpd服务

第四步:测试

在其他测试机中编写本地解析文件

 然后在浏览器中输入域名就会访问相应的虚拟用户那里了。

八、Apache的语言支持

~~~~~~~~~~~~未完待续~~~~~~~~~

九、Apache的加密访问

1、https协议

第一步:安装https协议的软件

dnf search http                  #查找http需要的软件
dnf install mod_ssl -y           #安装加密https软件

安装完成后会在</etc/httpd/conf.d/>目录下新增一个“ssl.conf”文件。

第二步:重启httpd服务

第三步:客户端测试

可以看到在客户端浏览器里,第一次访问需要获得证书认证。通过以下方式可以看到网站向其发送的证书文件。

第四步:生成证书

openssl req --newkey rsa:2048 \
-nodes -sha256 -keyout /etc/httpd/westos.org.key \
-x509 -days 365 -out /etc/httpd/westos.org.crt
--newkey生成新密钥-x509证书格式
--nodes不需要依赖des-days证书有效期
-sha256256位加密方式-out要分发的证书(.crt)
-keyout要分发的密钥(.key)

 生成证书的其他参数如下图所示:

 第五步:更改配置文件

向使用“https“协议访问的客户端发放证书,需要更改<sshl.conf>配置文件

vim /etc/httpd/conf.d/sshl.conf        #编辑https协议的配置文件

第六步:重启服务

第七步:重新测试

在客户端的浏览器界面查看网站证书,可以查到之前“生成证书”步骤中填写的认证信息

注意:重新测试之前需要先删除此网站已经存在本地的证书,否则不会发放新的证书

2、强制加密:

使用特定域名访问时无论是http还是https都会强制转换到https协议

第一步:创建虚拟用户目录及文件

mkdir /var/www/virtual/westos.org/login -p                #创建虚拟用户目录
vim  /var/www/virtual/westos.org/login/index.html         #创建虚拟用户默认文件

第二步:编辑虚拟用户配置文件

默认用户访问通过80端口,当使用“login.westos.org”域名登录时,需要跳到https强制转换到通过443端口访问

第三步:设置测试客户端的解析文件

第四步:测试

在客户机中浏览器中输入域名,会自动跳转到https协议访问。

十、squid正向代理与反向代理

1、正向代理

第一步:安装squid

dnf install squid -y            #安装代理缓存软件

第二步:更改代理机的squid的配置文件

第三步:更改代理机火墙配置

第四步:在测试机的浏览器中设置代理

 第五步:测试

在测试机中无法连接百度,但是通过设置代理可以访问百度。

二、反向代理

设置中间代理服务器,其中50号机为客户机,151号机为区域服务器(有squid,无apache),150号机为总服务器(有apache)。

第一步:在151号机中更改配置文件

第二步:重启151号机中的squid服务

第三步:设置151号机squid服务器的火墙

firewalld-cmd --add-service=http  --permanet        #使得http服务通过火墙

 注意:虽然squid服务器没有http服务,但是火墙中需要设置http服务通过端口,否则客户机无法通过浏览器访问151

第四步:测试

在50号主机的浏览器中访问<172.25.254.151>,实际访问的是<172.25.254.150>的资源

十一、本章总结

1、在更改Apache的默认发布目录时,Selinux开启的情况下,需要更改发布目录的安全上下文为“httpd_sys_content_t”,远程主机才可以访问目录下的文件;Selinux关闭的情况下就不会出现这个问题,但会导致系统安全性能降低。

2、在基于用户认证的访问控制中,生成认证文件的参数<-cm>为第一次创建认证文件的时候,如果需要往认证文件中添加用户,就不需要参时<-c>了,否则再次执行<-cm>参数,会覆盖已经存在的文件。

3、https协议生成证书后,重新测试之前需要先删除此网站已经存在本地的证书,否则不会发放新的证书

4、设置反向代理时,虽然squid服务器没有http服务,但是火墙中需要设置http服务通过端口,否则客户机无法通过浏览器访问151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值