当前位置:首页 > 资讯 > 正文

复习之web服务器--apache

复习之web服务器--apache

  • 两台虚拟机 (nodea,nodeb)
  • 配置ip
  • 搭建软件仓库
  • 关闭selinux
 
 

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,尤其对Linux的支持相当完美。在服务器上可以支持HTTP协议。

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,主要是应用于WEB端内容获取。随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示(更多的图片文件),排版变得更精美(更多的CSS),更复杂的交互也被引入(更多的JS)。用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

  • dnf  install httpd :安装apache,linux里面安装httpd即可!
  • systemctl enable --now httpd : 设置apache当前及开机自启
  • firewall-cmd --permanent --add-service=http :设定火墙策略
  • firewall-cmd --permanent --add-service=https :设定火墙策略
  • vim /var/www/html/index.html : 修改默认发布目录的内容
 

此时在浏览器输入:  172.25.254.100  可以看见apache的默认界面

 修改默认发布文件的内容

 

在浏览器查看默认发布界面,已经改变!

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

--------------------------------------------------------实验-----------------------------------------------------------

主配置文件和子配置文件的查看!

  • listen  80 : 默认端口号
  • 修改端口号设定火墙策略: firewall-cmd --permanent --add-port=8080/tcp

进入主配置文件修改httpd的默认端口

重启服务,设定火墙策略

 

再次查看默认发布界面,已经无法连接!

 在ip后加上端口号即可访问!http://172.25.254.100:8080/  ps:一定要用英文符号

 最后在将端口号修改为默认端口号80,便恢复默认界面了!

 
 
 
  • index.html : 主配置文件直接修改

 当然默认测试页也可以修改,默认测试页一般是index.html ,可以在主配置文件里面修改!

 
 

此时测试页面变为:

  • 直接在主配置文件修改
  • 访问授权 :不授权无法访问!!

首先建立新的发布目录

 

接着修改主配置文件,并重启服务!

 查看默认发布界面!可知默认发布目录修改成功!

 测试完成后恢复默认!!

在默认发布目录下建立新目录,并在该目录的发布界面写入文字!

 

在浏览器查看该目录,显示正常!

(1) ip白名单

如果想该目录只能让172.25.254.73看见,别的ip看不见,可以设置白名单!

在主配置文件添加ip白名单即可!

保存后,重启httpd服务,进行测试!

首先在172.25.254.73浏览器进行测试!可以访问该目录

 在172.25.254.200浏览器访问,该目录无法访问!!

 (2) ip黑名单

与上类似,如果不想让73访问,其他都可以访问,可以设置黑名单!

同样在主配置文件设定!

 保存后重启服务,进行测试!

在172.25.254.73浏览器进行测试,发现无法访问!

 在172.25.254.200浏览器进行访问,发现可以访问!

测试完成恢复默认值 !

  • 建立认证文件--用户  :  htpasswd   -cm   /etc/httpd/.htpasswdfile   admin
  • 在主配置文件认证:
  •                                  指定认证文件
  •                                  认证提示语
  •                                  认证类型
  •                               允许认证通过的用户

首先建立两个认证用户,注意:第一建立用-cm  后来建立用-m ,否则会覆盖!

 建立完成进入主配置文件认证!

ps:是   .htpasswdfile!!!!

 保存后,重启服务!!进入浏览器进行测试!!会弹出需要认证的界面!

 此时清理历史,再次访问,不清理不会弹出登陆框!

 再次访问输入用户hgx及密码,发现无法访问!!因为设定只能admin用户访问!

修改主配置文件,设定所有认证用户均可访问!!

 测试,hgx和admin用户都可以访问该目录!

当我们想实现访问一个ip的不同域名可以展现不同页面,可以进行以下操作

  • 编辑子配置文件
  • 分别写入域名+页面

新建目录,建立不同的发布界面!

 
 

设定不同域名对应的界面!

文件名字随意起,必须以conf结尾!

 

编辑配置文件,设定访问不同域名显示不同的发布界面!

ps:设定完毕记得重启服务,重启成功说明设定没错!

测试的浏览器在那儿就在那儿写本地解析!!

本次实验在真机写本地解析!

 
 
 

在真机进行测试,分别访问3个域名,可以显示3个不同的发布界面!设定成功!

 ping3个域名,ip都是172.25.254.100证明是同一个ip!

默认发布界面写的就是超文本标记语言,默认支持

测试界面正常显示!

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言

  • 安装插件即可支持

在默认目录下新建php目录,设定配置文件!

在发布界面写入:php语言

 

此时在浏览器测试,只是显示php目录,apache无法支持php语言!

因为需要安装php插件!

 

安装成功后重启httpd服务,再次测试!支持php语言!

CGI(通用接口)是一种在Web服务器和应用程序之间通信的标准接口协议,它允许Web浏览器发送请求到Web服务器,并将用户输入与服务器端执行的程序进行交互。通过CGI技术,可以实现动态生成网页、处理表单数据、访问数据库等功能。

(1)使用cgi前

建立一个测试文件,写入“date",执行该程序,显示当前时间!

 

但是在网页测试浏览时,却无法执行该程序,只是显示date!

 (2) apache的说明文档

那要怎么使用cgi呢?可以先查看apache的说明文档!

首先下载apache的说明文档!

 

下载成功后,重启服务,就可以在网页查看apache的说明手册!

 (3) 编辑cgi指令

进入apache手册------> cgi ----->Your first CGI program

 该程序到新建的文件!

 
 
 
 
 

这是因为没有设定在直接访问!

(5) 直接访问指令

在配置文件中添加即可!!

 浏览器再次测试,可以直接访问,但是还是无法执行!

 这是因为cgi脚本需要执行权限!

(6) 添加可执行权限

 

再次测试,执行成功!!

Web服务器接口Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。

(1) 编辑python脚本

注意!python对格式很严格,一定要仔细,否则不识别!!编辑完成重启httpd服务

 

此时在浏览器测试,发现需要卸载文件!不能执行脚本

(2) 识别wsgi指令

进入配置文件!

 (3) 安装wsgi插件

 

安装成功重启httpd服务

(4) 添加地址解析

在浏览器所在主机添加地址解析,保证可以直接访问虚拟机!

(5) 测试

在浏览器测试,直接访问wsgi.westos.org,成功!

         通常的互联网通信,是采用http的明文通信协议。在这种通信协议下,信息会以明文的方式进行传输。这样就会存在被第三方窃取、篡改的风险。因此,我们采用https协议进行加密通信。

       https协议是采用加密的方式对数据进行传输,并且使用的是更适合互联网的公钥加密方式。网站只要在服务器上部署上ssl证书,即可使网站实现https协议通信。

      SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer (SSL) 安全套接字层)。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了,安装SSL证书后,网站协议将从HTTP转换为安全HTTPS),即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。
   

  • 对称加密:指加密和解密使用相同的密钥的加密算法。它的加密原理是将明文 (输入的机密信息) 通过密钥进行加密,然后再将加密后的密文发送出去。接收方收到密文后,使用相同的密钥进行解密,从而获得明文。对称加密的优点在于速度快,加密强度高,且密钥管理简单。但是,它也存在缺点,例如密钥管理不当会导致密钥泄露,攻击者可以轻松地破解加密信息。
  • 非对称加密:是指加密和解密使用不同的密钥的加密算法。它的加密原理是将明文通过非对称密钥进行加密,然后再将加密后的密文发送出去。接收方收到密文后,使用对称密钥进行解密,从而获得明文。非对称加密的优点在于加密强度高,攻击者需要付出极大的代价才能破解加密信息,而且密钥管理简单。但是,它也存在缺点,例如由于非对称密钥较长,加密速度较慢,且密钥管理不当会导致密钥泄露。

   https协议在通信时,首先会采用非对称加密的方式,把会话主密钥进行公钥加密,然后传输给服务器,服务器使用私钥解密后,客户端和服务器即可建立起安全的访问通道。在接下来的通信就会采用速度更快的对称加密方式进行数据传输。

    这样https协议就既拥有非对称加密的安全性,同时也拥有了对称加密的速度快的两个优点。

  • 首先,客户端(例如Web浏览器)向服务器发出HTTPS请求。
  • 服务器将 SSL证书(包含服务器的公钥信息)和服务端随机数 发送给客户端。该公钥由数字证书颁发机构(CA)签名,以确保其真实性和可信度。
  • 客户端对证书进行验证,验证成功后,利用 随机数 生成 主密钥 --->(非对称加密:安全传送主密钥)
  • 客户端 使用 服务器公钥 加密 发送 会话主密钥
  • 服务器 使用 服务器私钥 解密 获得会话主密钥
  • 服务器 用会话主密钥加密传输会话内容-->(对称加密-->快速传输)

(1)安装SSL加密插件

 

安装成功后重启服务httpd,即可在浏览器访问:https://172.25.254.100

这里会出现告警--因为我们没有CA机构的认证!

 这里做实验,接受就可以!

 查看证书信息,是系统默认的

 因此,我们要部署SSL证书!

(2)生成SSL证书

建立新目录,在该目录下生成证书+会话密钥!

这里没有CA机构颁发的证书,因此只使用了对称加密!

 

(3)编辑配置文件--系统识别证书

 

进入ssl主配置文件,修改证书+密钥路径

 修改完成后,重启服务,在浏览器再次查看证书信息,已更改成功!

 (4)http-->https

当访问ww.baidu.com时,会自动跳转到https://www.baidu.com,这是如何实现的 ?

首先新建一个新网址login.westos.org,当访问该网址自动转到加密。

 

编辑配置文件,添加两个语句块!

 
 

 在浏览器所在主机添加解析

 以上设定完成,在浏览器输入login.westos.org测试,发现会自动跳转https://login.westos.org/

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。

代理服务器是网络信息的中转站。一般情况下,使用网络浏览器直接去链接其它Internet站点并取得网络信息时,须送出请求信号来得到应答,然后对方再把信息传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,请求信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它不断将新取得数据包存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率

设定虚拟机nodeb为代理服务器,nodea为web服务器,真机为浏览器

ps:以下操作在nodeb上进行!

(1) 安装squid缓存服务器

Squid cache(简称为 Squid)是一个流行的自由软件(GNU 通用公共许可证)的代理服务器和 Web 缓存服务器。Squid 有广泛的用途,从作为网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。

 

(2)编辑主配置文件

 
 

 注意:vhost指的是web服务器的虚拟主机,必须与配置文件一致!

配置完成,开启squid服务!

(3)添加火墙策略

 

(4) 查询httpd服务

查询nodeb上是否有httpd,确保没有,才可以测试!

 

(5) 测试

在真机浏览器搜索172.25.254.200,显示

而node没有apache,显示的是nodea的默认发布界面!

 

若修改nodea的默认发布界面为 172.25.254.100

 

再次搜索200,显示的仍是nodea的发布界面,这是因为nodeb为代理服务器,没有的请求会从nodea上获取!