apache:企业常用的web服务。用来提供http://(超文本传输协议)

Apache HTTP Server(简称Apache),是一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
一、apache部署安装
[root@dns ~]# yum install httpd -y            ##安装apache软件
[root@dns ~]# yum install httpd-manual -y    ##安装apache手册
[root@dns ~]# systemctl start httpd            ##打开服务
[root@dns ~]# systemctl enable httpd
[root@dns ~]# firewall-cmd --permanent --add-service=http        ###打开加强性火墙的http服务
[root@dns ~]# firewall-cmd --reload
[root@dns ~]# cd    /var/www/html/          ###apache的根目录,默认发布文件位置
[root@dns html]# vim    /var/www/html/index.html         ###apache默认发布文件

           ##h1字体设置
测试:网页浏览  172.25.254.128  显示/var/www/html/index.html 内容
二、apache信息及更改
1. 更改默认发布文件
  原文件: /var/www/html/index.html
默认发布文件是访问apache时没有指定文件名称时默认访问的文件
这个文件可以有多个,有访问顺序
[root@dns html]# vim   /etc/httpd/conf/httpd.conf        ##修改主配置文件
 164  DirectoryIndex   test.html   index.html         ##在164行添加test.html;默认先访问test.html,没有时再访问index.html
[root@dns html]# systemctl  restart  httpd.service
[root@dns html]# vim  /www/html/test.html


测试:网页浏览  172.25.254.128  显示/var/www/html/test.html 内容

2.更改默认发布目录
  原目录:/var/www/html/
[root@dns html]# vim /etc/httpd/conf/httpd.conf


[root@dns html]# mkdir  -p  /westos/html
[root@dns html]# ls  -Zd  /var/www/html/       ###查看与httpd服务匹配的文件安全上下文
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@dns html]# semanage  fcontext   -a   -t   httpd_sys_content_t    '/westos(/.*)?'    ##更改/westos及他下面所有文件的安全上下文
[root@dns html]# restorecon  -FvvR  /westos/     ###重新加载安全上下文
[root@dns html]# systemctl   restart   httpd.service
[root@dns html]# vim   /westos/html/index.html


[root@dns html]# rm   -fr   test.html

测试:网页浏览  172.25.254.128  显示 /westos/html/index.html 内容
3.更改服务端口
  默认端口为80
[root@dns html]# vim /etc/httpd/conf/httpd.conf
               ##将监听端口更改为8090
[root@dns html]# systemctl restart httpd.service
[root@dns html]# firewall-cmd --permanent --add-port=8090/tcp     ###打开加强性火墙的8090端口
[root@dns html]# firewall-cmd --reload
[root@dns html]# netstat -antlupe | grep httpd                ##查询httpd监听端口

     
测试:网页浏览  172.25.254.128:8090 

四、apache的虚拟主机(一个IP做多个服务器)

虚拟主机允许您从一个 httpd 服务器同时为多个网站提供服务。在本节中 , 我们将了解基于名称的虚拟主机其中多个主机名都指向同一个 IP 地址 , 但是 Web 服务器根据用于到达站点的主机名提供具有不同内容的不同网站。
1)恢复
[root@dns html]# vim /etc/httpd/conf/httpd.conf
[root@dns html]# systemctl restart httpd.service
2)主站点及默认站点
[root@dns html]# vim   /etc/httpd/conf.d/adefault.conf               ##配置默认文件

[root@dns html]# vim   /westos/html/index.html


[root@dns html]# systemctl   restart  httpd.service
3)指定的子站点
[root@dns html]# mkdir  -p  /var/www/virtual/westos.com/music           ##建立虚拟机主机默认发布的目录   

[root@dns html]# mkdir  -p  /var/www/virtual/westos.com/news   
[root@dns html]# vim /var/www/virtual/westos.com/music/index.html      ##建立虚拟机主机默认发布的文件

vim /var/www/virtual/westos.com/news/index.html 


[root@dns conf.d]# vim /etc/httpd/conf.d/news.conf

[root@dns conf.d]# cp  music.conf  news.conf

[root@dns conf.d]#  vim news.conf

[root@dns html]# systemctl restart httpd.service
检测:在浏览器主机上做本地解析
 [root@foundation68 ~] #  vim   /etc/hosts     ##在访问主机进行域名解析

                  

                        

四、访问控制

Apache 无格式文件用户身份验证,在此配置中 , 用户账户和密码存储在本地 .htpasswd 文件中。
处于安全原因 , 该文件不能保存在网站的 DocumentRoot 中 ,而应保存在 Web 服务器不提供服务的一些目录中。

[root@dns html]# mkdir  /var/www/html/westos

[root@dns html]# vim   /var/www/html/westos/index.html


1. 设置允许、禁止名单
[root@dns conf.d]# vim /etc/httpd/conf/httpd.conf   ##修改主配置文件时要将之前添加进去的所有内容都删除,再将注释的内容还原

     ###允许除68外的所有

注:Order Allow,deny          ##顺序,先读谁;后读的会覆盖先读的
[root@dns conf.d]# systemctl  restart  httpd.service

测试:真机68网页浏览:172.25.254.128/westos :                           用虚拟机网页浏览:http://172.25.254.128/westos :

                                   
[root@dns conf.d]# vim  /etc/httpd/conf/httpd.conf

             ###禁止除68外的所有
[root@dns conf.d]# systemctl restart httpd.service

测试:真机68网页浏览:172.25.254.128/westos :                           用虚拟机网页浏览:http://172.25.254.128/westos :

                                                   
2.加密访问

[root@dns html]# mkdir /var/www/virtual/westos.com/music/html/admin/
[root@dns admin]# vim /var/www/virtual/westos.com/music/html/admin/index.html
[root@dns conf.d]# cd   /etc/httpd/
[root@dns httpd]# htpasswd   -cm   /etc/httpd/userpass  admin            ##c创建;m指定文件;用户名
[root@dns httpd]# htpasswd   -m    userpass    tom                   ##取消c,否则覆盖了admin用户
[root@dns httpd]# cat   /etc/httpd/userpass               ##查看apache的用户
admin:$apr1$Audn1L2O$rfbIN2fRXIs8t8G9is2W5.
tom:$apr1$zaJD2jc8$jJdijeiEeS4C9eAskUmv6/
[root@dns httpd]# vim  /etc/httpd/conf/httpd.conf


   注:  AuthUserFile "/etc/httpd/userpass"         ###认证文件
             AuthName "Please input username and password"        ##用户访问时提示语句
             AuthType basic                   ##认证类型:基础认证
       #    Require vaild-user            ##/etc/httpd/userpass文件的所有人都可访问
             Require user admin          ##只有admin用户可输入密码访问
[root@dns httpd]# systemctl restart httpd.service
检测:浏览器上 http://music.westos.com/admin


    <shift> + <ctrl> + <delete>             ##登陆一次后,再访问时不提供;此操作可清楚缓存好的密码
五、apache支持语言
1.php   ##语言
[root@dns httpd]# vim /var/www/html/index.php     ####在默认发布目录下建立文件作为php测试页


[root@dns httpd]# yum   install  php   -y
[root@dns httpd]# systemctl   restart   httpd.service
测试:浏览器上 http://172.25.254.128/index.php


2.cgi   ##通用网关接口

通用网关接口 (CGI) 是网站上放置动态内容的最简单的方法。CGI 脚本可用于许多目的 , 但是谨慎控制使用哪个 CGI 脚本,以及允许谁添加和运行这些脚本十分重要。编写质量差的 CGI脚本可能为外部攻击者提供了破坏网站及其内容安全性的途径。
因此 , 在 Web 服务器级别和 SELinux 策略级别 , 都存在用于限制 CGI 脚本使用的设置.

[root@dns httpd]# mkdir  /var/www/html/cgi
[root@dns conf.d]# semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'           ##更改安全上下文,与apache服务可匹配
[root@dns conf.d]# restorecon -RvvF /var/www/html/cgi/            ###刷新
[root@dns conf.d]# vim /var/www/html/cgi/index.cgi              ##写cgi脚本

             ##显示时间
[root@dns httpd]# chmod   +x   /var/www/html/cgi/index.cgi     ##给脚本执行权限
[root@dns conf.d]# vim  /etc/httpd/conf.d/adefault.conf


注:
<Directory "/var/www/html/cgi">         ##指定目录
          Options +ExecCGI                    ###目录中的所有cgi脚本都要执行
          AddHandler cgi-script .cgi       ###包含cgi-script字样及以.cgi结尾的都是cgi脚本
[root@dns conf.d]# systemctl   restart  httpd.service
测试:浏览器上 172.25.254.128/cgi/index.cgi
六、https
本来浏览器直接www.student.com 可访问;但https://www.student.com 不可访问;因为无法直接加载证书(无网络认可)
http传输是明文的;https传输方式是加密传输,客户端把数据传给服务端是带锁的。
1.制作apache访问证书

如果加密的通信非常重要 , 而经过验证的身份不重要 , 管理员可以通过生成 self-signed certificate 来避免与认证机构进行交互

所带来的复杂性。使用 genkey 实用程序 ( 通过 crypto-utils 软件包分发 ),生成自签名证书及其关联的私钥。为了简化起见 ,genkey 将在“正确”的位置 (/etc/pki/tls 目录 ) 创建证书及其关联的密钥。相应地 , 必须以授权用户 (root) 身份运行该实用程序。
1)下载mod-ssl协议
mod-ssl是一种以openss的工具箱为基础,专门为apache提供密码保护,ssl(安全套接层)和tls(传输套接层)安全的协议
[root@dns conf.d]# yum  install  mod_ssl   -y
[root@dns conf.d]# firewall-cmd  --permanent --add-service=https    ###在加强性火墙上打开https服务
[root@dns conf.d]# firewall-cmd  --reload        ###重新加载
[root@dns conf.d]# netstat -antlupe | grep httpd      ###443加密端口打开
tcp6       0      0 :::443                  :::*                    LISTEN      0          136071     16345/httpd         
tcp6       0      0 :::80                    :::*                    LISTEN      0          136059     16345/httpd         

2)下载crypto-utils

crypto-utils提供纯java的加密API,用来简化公私钥和证书储存、对称和非对称加密方法的封装
[root@dns conf.d]# yum  install  crypto-utils   -y
3)生成自签名证书及关联密钥
[root@dns conf.d]# genkey www.student.com
存放位置>选择密钥大小(1024)>等待(开发者)、去random取数据(敲击apache服务器)>给CA颁布证书(no,因收费)>是否给证书加密(不选)>填信息

       

        


4)[root@dns conf.d]# vim  /etc/httpd/conf.d/ssl.conf            ##查看安装证书及其私钥
101 SSLCertificateFile /etc/pki/tls/certs/www.student.com.crt       ###证书地址
108 SSLCertificateKeyFile /etc/pki/tls/private/www.student.com.key       ###钥匙地址
[root@dns conf.d]# systemctl  restart  httpd.service
5)浏览器中https://www.student.com         I understand risks  > 下载证书  >  完成

        

                         ##可以看到看到网址前面有一个小锁

2.设定https虚拟主机并设定网页重写
1)[root@dns conf.d]# mkdir -p /var/www/virtual/westos.com/login
2)[root@dns conf.d]# vim /var/www/virtual/westos.com/login/index.html
     login 's page
3)[root@dns conf.d]# vim /etc/httpd/conf.d/login.conf


注:
<VirtualHost *:80>            ##设置访问80端口时自动跳转到443端口访问页面
         ServerName login.westos.com        
         RewriteEngine on              ##网页重启功能开启
         RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]    中:

    ^(/.*)$       ##客户主机在浏览器中输入的所有字符
    https://     ##强制客户加密访问
    %{HTTP_HOST}        ##客户请求信息
    $1           ##表示^(/.*)$的值
    [redirect=301]            ##临时重写,只转换login.westos.com
    [redirect=301]           ##永久重写,所有输入都转换到加密访问

[root@dns conf.d]# systemctl   restart  httpd.service
测试:浏览器上搜login.westos.com 可直接重启到https://login.westos.com

七、squid代理(翻墙)

squid可以做代理也可以做缓存。squid不仅可以做正向代理,又可以做反向代理。

正向代理,squid后面是客户端,客户端上网要通过Squid去上;反向代理,squid后面是服务器,服务器返回给用户数据需要走squid。

1.正向代理:客户已知代理主机,主动指定                 ##此操作,主机68为代理,128为客户,服务端为某网站

[代理]
[root@foundation68 ~]# yum install squid.x86_64  -y
[root@foundation68 ~]# vim /etc/squid/squid.conf


注:http_access  allow  all      ##代理接口3128允许所有人访问
      http_port 3128
    cache_dir  ufs /var/spool/squid  100  16  256 ##代理取数据存放目录,此目录有16的一级目录,每个一级目录下有256个子目录
[root@foundation68 ~]# systemctl  restart  squid.service

[客户]
[root@dns mysqladmin]# ping  www.baidu.com  ##网不通
[root@dns mysqladmin]# firefox &  ##打开虚拟机浏览器
Edit----perferences---设置--网络---connecyion(建立)---manual---真机ip、端口---use---可进入网站

            

 
注意:此时虚拟机是不可以上网的,但它可把请求发给代理,代理将数据缓存到/var/spool/squid目录,虚拟机通过看代理主机的3128端口获取信息,进入网页
还原:
[root@foundation68 ~]# rpm -e squid
[root@foundation68 ~]# rm -fr /etc/squid/squid.conf.rpmsave
2.反向解析:企业服务端指定客户访问代理,客户并不知道
 eg:腾讯的web机制------------------------------ 本次实验
        总服务端有几台服务器(轮询)为缓解压力------- 128主机、112主机
        代理,每个省份都有------------------------- desktop:228主机
        客户访问腾讯实际到达代理的80端口----------- 68主机做客户访问
[总服务端]:有apache服务
[代理]:无apache服务,有80端口
[root@mm ~]# yum install squid.x86_64 -y          ##安装服务
帮助手册:    /usr/share/doc/squid-3.3.8/squid.conf.documented
[root@mm ~]# vim   /etc/squid/squid.conf  
56 http_access allow all
 59 http_port 80 vhost vport       ##80 虚拟域  虚拟端口
 60 cache_peer   172.25.254.128     parent           80                       0             proxy-only     round-robin    weight=2     name=web1    
         ##缓存            代理主机        父级(服务)   端口    当代理挂了不通知     代理                 调用              权重       代替此行所有
 61 cache_peer  172.25.254.112  parent  80  3130  proxy-only  round-robin  name=web2   ##0 不通知;3130通知其他,要挂了
 62 cache_peer_domain   www.westos.com   web1   web2       ##访问www.westos.com时,轮叫web1、web2
 64 cache_dir  ufs   /var/spool/squid   100   16  256
[root@mm ~]# systemctl   restart   squid
[root@mm ~]# systemctl stop   firewalld.service
[客户]:有apache服务
[root@foundation68 ~]# vim /etc/hosts
172.25.254.228  www.westos.com
浏览器:www.westos.com       轮询:权重决定了访问两次128主机,一次112主机

Logo

更多推荐