Apache的管理及优化web

本文详细介绍了Apache服务器的安装、配置和安全管理,包括端口修改、默认发布文件和目录的调整、访问控制(IP黑白名单及用户认证)、虚拟主机设置、语言支持(PHP、Perl、Python)以及HTTPS加密访问。此外,还探讨了Squid代理服务器的正向和反向代理应用,确保了网络访问的安全和效率。
摘要由CSDN通过智能技术生成

一、Apache的安装与启用

在web访问时使用的超文本传输协议:http://
提供超文本传输协议的软件有:Apache nginx stgw jfe Tengine
http:// 超文本传输协议

1 安装:dnf install httpd -y

在这里插入图片描述

2启用httpd服务

 systemctl enable --now httpd             ##开启服务并设定为开机启动
firewall-cmd --permanent --add-service=http     ##  在火墙中永久开启http访问
firewall-cmd --reload reload            ## 刷新火墙,使设定生效
firewall-cmd --list-all          查看火墙信息

在这里插入图片描述
打开浏览器输入本机ip即可进入共享测试页面。
在这里插入图片描述

二、基本信息

服务名称 httpd
主配置文件 /etc/httpd/conf/httpd.conf
子配置文件 /etc/httpd/conf.d/*.conf
默认发布目录 /var/www/html
默认发布文件 index.html
默认端口http 80
默认端口https 443
用户 apache
日志 /etc/httpd/logs

三、基本配置

1.默认发布端口修改

vim /etc/httpd/conf/httpd.conf 打开主配置文件,修改端口为8080
在这里插入图片描述
firewall-cmd --permanent --add-port=8080/tcp 添加端口到火墙
刷新火墙,重启服务
在这里插入图片描述
从1号主机的浏览器进入时需要指定端口,因为默认端口80已经被修改为8080,
在这里插入图片描述指定端口才可以访问:
在这里插入图片描述

修改完端口后记得改回,避免影响后续实验。

2.默认发布文件修改

在 /var/www/html/ 下新建erqian.heml 并写入测试内容
在这里插入图片描述

vim /etc/httpd/conf/httpd.conf编辑主配置文件,默认发布文件为index.html 添加新文件erqian.html
在这里插入图片描述
重启httpd服务,erqian.html文件在前,所以优先访问他的内容
在这里插入图片描述

3.默认发布目录修改

创建新的发布目录,由于文件安全上下文的关系,我们将新目录先在/etc/www/下创建 ,再将其移到/var/下
在这里插入图片描述

修改主配置文件vim /etc/httpd/conf/httpd.conf
在这里插入图片描述
重启服务,打开网页进行测试
在这里插入图片描述

打开成功,即可证明发布目录修改成功,试验成功记得改回原配置。

四、Apache的访问控制

建立实验素材
在这里插入图片描述

1.基于ip的访问控制

ip访问控制:打开主配置文件,修改,先读取deny,再读取allow,即为白名单。
白名单:

<Directory "/var/www/html/qyq/">
        Order Deny,Allow
        Allow from 172.25.254.101
        Deny from ALL
</Directory>

在这里插入图片描述
表示只有101号主机允许访问,使用其他主机进行访问会出现403错误,访问被拒绝。
curl http://172.25.254.201/qyq
在这里插入图片描述
黑名单:只拒绝101主机的访问
在这里插入图片描述黑名单里的用户访问会被限制:403错误,当被移出后又能访问到
在这里插入图片描述

2.基于用户的访问控制

基于用户认证,先在/etc/httpd/目录下创建用户认证文件即账号密码,创建用户admin001 用参数 -cm
当/etc/httpd/apacheauth 文件存在时,添加用户admin002用-m(不要加 -c 参数),否则会覆盖源文件内容
htpasswd -cm /etc/httpd/htpasswdfile admin ##生成认证文件
在这里插入图片描述
修改主配置文件中:指定认证文件,认证提示语,认证类型(基本认证),允许通过的认证用户
允许admin001访问
在这里插入图片描述
输入admin001的用户名和密码后,可以访问到共享目录中的内容
在这里插入图片描述
使用其他用户身份admin002访问
按取消后,会出现以下界面
在这里插入图片描述
允许所有用户通过认证
在这里插入图片描述

此时admin002也可以访问到

五.Apache的虚拟主机

Apache的虚拟主机功能 (Virtual Host) ,是可以让一台服务器基于IP、主机名或端口号实现提供多个网站服务的技术。
建立发布目录和发布文件:

mkdir -p /var/www/westos.com/{news,wenku}
echo “wenku’s page” >/var/www/westos.com/wenku/index.html
echo “news’s page” > /var/www/westos.com/news/index.html
echo “default’s page” > /var/www/html/index.html

在这里插入图片描述编辑子配置 /etc/httpd/conf.d/vhosts.conf,配置基于主机名称的虚拟主机

<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>

<virtualHost *:80>
ServerName wenku.erqian.com
DocumentRoot “/var/www/erqian.com/wenku”
CustomLog logs/wenku.log combined
</VirtualHost>

<virtualHost *:80>
ServerName news.erqian.com
DocumentRoot “/var/www/erqian.com/news”
CustomLog logs/news.log combined
</VirtualHost>

在这里插入图片描述
VirtualHost :默认的虚拟主机;
DocumentRoot:设置 Apache HTTP Server 的文件根目录;
CustomLog :记录apache日志,日志类型为combined混合型日志;

在客户机中编辑/etc/hosts文件–配置域名解析:添加主机ip, 主机名、域名
在这里插入图片描述
在这里插入图片描述

六.Apache的语言支持

1.php

编辑php发布测试页面

vim /var/www/html/index.php
<?php 
phpinfo(); 
?>

在这里插入图片描述

dnf install php -y ##安装APACHE的说明
systemctl restart httpd
可以访问到说明页,但无法显示php页面内容
在这里插入图片描述
dnf install php.x86_64 -y ##安装PHP语言支持后再次访问
在这里插入图片描述

2.cgi–perl语言

Apache还支持perl语言(cgi程序),cgi :通用网关接口,用到的是perl语言,由于Apache只能发布静态页面,所以写好的程序要用cgi先执行,获得结果之后再通过http服务发布出来。
在共享目录下新建一个cgi目录,在目录中用perl语言编写index.cgi文件

mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print date;

在这里插入图片描述

通过客户端访问时显示
在这里插入图片描述

编辑服务器 Apache的主配置文件/etc/httpd/conf/httpd.conf,语句含义:
(1)执行cgi的触发器;
(2)要执行的文件如果是cgi-script类型或以.cgi 结尾,则语句(1)都生效

<Directory “/var/www/html/cgidir”>
Options +ExecCGI
AddHandler cgi-script  .cgi
<Directory>

在这里插入图片描述
重启httpd服务,给测试页index.cgi添加执行权限
在这里插入图片描述
从客户端浏览器访问cgi页面,正确执行date 命令
在这里插入图片描述

3. wsgi–python

wsgi 支持python语言
在共享目录下新建一个wsgi目录,在目录中用python语言编写index.wsgi文件
在这里插入图片描述
此时客户端浏览器访问时,会直接下载源代码
在这里插入图片描述服务器安装python执行环境
在这里插入图片描述
需要一个虚拟主机,当访问前面网址的时候,去看后面文件的内容 ,做这个设定,可以不让用户下载脚本文件,防止源码泄漏。
编写 /etc/httpd/conf.d/vhosts.conf 文件,设定虚拟主机
在这里插入图片描述
在客户端配置dns解析,重新访问可以显示出python测试页面的输出
在这里插入图片描述

七.Apache的加密访问

1.https的网页认证信息

https在 http的基础上通过传输加密和身份认证保证了传输过程的安全性。

dnf install mod_ssl -y # 安装加密插件
https使用443端口
证书和私钥文件路径如下:
在这里插入图片描述
在系统防火墙中永久开启https访问,刷新防火墙使设定生效,此时在浏览器所在真实主机中可以访问https://172.25.254.201,弹出安全警告页面
在这里插入图片描述由于证书没有在CA机构进行认证,所以会被认为该网页不安全。
在这里插入图片描述选择接受,可以在浏览器中查看该网页的认证信息中都为空
在这里插入图片描述在web服务器中通过发送请求,新建密钥文件并使用rsa对其进行加密,输出密钥文件到/etc/httpd/westos.org.key;生成证书文件,其格式为x509,证书有效期为365天,输出证书文件到/etc/httpd/westos.org.crt

openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/westos.org.key -x509 -days 365 -out /etc/httpd/westos.org.crt

设定认证信息
在这里插入图片描述编辑/etc/httpd/conf.d下ssl的配置文件,修改其中的认证密钥和认证证书文件路径,重启httpd服务

在这里插入图片描述重新访问后查看证书信息,可以看到我们在web服务器上设置的相关信息
在这里插入图片描述

2.网页重写

当客户端使用http访问时web服务器时可以通过网页重写,将其转换成加密方式https来进行访问
在httpd的共享位置/var/www目录中建立login目录,在该目录下编写其发布文件index.html,

在这里插入图片描述
编写虚拟主机配置文件/etc/httpd/conf.d/vhosts.conf如下,重启httpd服务

<VirtualHost *:80>
        Servername login.westos.org
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</VirtualHost>


<VirtualHost *:443>
        ServerName login.westos.org
        DocumentRoot /var/www/login
        SSLEngine on
        SSLCertificateKeyFile /etc/httpd/westos.org.key
        SSLCertificateFile /etc/httpd/westos.org.crt
</VirtualHost>
^(/.*)$ 客户主机浏览器中输入的所有内容,转化为:
https://客户主机的输入的所有内容,
其中%{HTTP_HOST}为请求主机
将$写到请求主机的地址栏

在这里插入图片描述
编辑客户端dns,使用客户端浏览器访问时,页面会被强制转换为加密方式访问:
在这里插入图片描述

八.Squid+Apache

1.squid 正向代理

只能解决不能上网的问题 ,让单网卡主机westosa不能上网但浏览器可以访问互联网页面,westosb为代理主机
实验环境:
真实主机:可以上网,开火墙,伪装路由器
在这里插入图片描述
westosa:单网卡,不能上网:

在这里插入图片描述网页访问也失败
在这里插入图片描述
westosb:双网卡可以与a同通信,加网关和DNS后可以上网
编写代理主机westosb的网卡配置文件/etc/sysconfig/network-scripts/ifcfg-xx,设定其ip为172.25.254.201,设定其网关为真实主机ip172.25.254.1
在这里插入图片描述在代理机westosb中安装代理软件:squid 并启动
在这里插入图片描述
编辑 /etc/squid/squid.conf
在这里插入图片描述
编辑完后重启,并在防火墙中添加开启squid的默认端口3128
在这里插入图片描述
在单网卡主机westosa的浏览器中添加代理机ip
在这里插入图片描述在这里插入图片描述
ping 不通百度,但可以通过中间能上网的代理机从浏览器访问百度页面。
在这里插入图片描述

2.squid反向代理

客户访问中间服务器,从中间服务器的缓存中直接读取数据,当缓存中不存在数据时,才去访问生产服务器,
实验效果:主机访问b中的默认发布内容,显示的是a主机中的默认发布内容( b主机中无Apache,a主机有Apache)
编写squid的配置文件如下:vim /etc/squid/squid.conf

vhost:虚拟主机,
vport:虚拟端口,
cache_peer:缓存策略,
101主机上的80(类型parent)端口取数据,
0:无备份主机,
proxy-only:只做代理

在这里插入图片描述
重启squid服务,火墙允许hhtp服务
在这里插入图片描述
测试:
主机访问b,显示的是a主机中的默认发布内容
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值