在web被访问时通常使用http://的方式
http:// 超文本传输协议
http:// 超文本传输协议提供软件: | Apache |
---|---|
. | nginx |
. | stgw |
. | jfe |
. | Tengine |
curl -I 地址 | 查看协议提供的软件 |
---|
Tengine
Apache
nginx
安装之前先保证你的yum源已经搭建完成
dnf install httpd.x86_64 -y
安装完成之后可以用rpm -qc httpd 查看配置文件
服务名称: httpd
配置文件: /etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d/*.conf 子配置文件
默认发布目录为:/var/www/html/
默认发布文件:/var/www/html/index.html
默认端口: 80 http
443 https
用户: apach
日志: /etc/httpd/logs
systemctl enable --now httpd
开启http(apache)服务
firewall-cmd --list-all
查看火墙信息
注意:查询火墙信息时当没有http和https这两个服务时需要添加
命令如下:
firewall-cmd --permanent --add-service=http 在火墙中永久开启http访问
http(非加密形式)
firewall-cmd --permanent --add-service=https 在火墙中永久开启https访问
https(加密形式)
输入完成之后重新启动火墙:
firewall-cmd --reload 刷新火墙使设定生效
firewall-cmd --list-all 再次查看信息时两个服务将会被加载到其中
测试:
打开网页输入你apache的服务器
将会出现以下界面(即为成功)
当想修改这个页面时:
可以在/var/www/html/下建立index.html这个文件
(默认发布文件)
注意:在index.html中出现的字符将会出现在网页中
编辑index.html文件
vim /var/www/html/index.html
测试:
设置完成之后再次进入将会出现你在index.html中写的字符
修改配置文件:/etc/httpd/conf/http.conf
注意:在修改你的端口时注意你的selinux和firewall火墙是否开启
当开启时需要做以下步骤
编辑配置文件进行修改
找到端口进行修改
注意:在修改端口之前先确认你的selinux是否处于打开状态
当处于打开状态时当你修改完端口之后服务无法启动
当selinux打开时,需要将你所要添加的端口号加入
添加完成之后重新启动http服务
给火墙添加这个端口
firewall-cmd --permanent --add-port=1111/tcp
firewall-cmd --reload
重新启动服务成功
测试:
先用默认端口测试
显示被拒绝
用指定端口访问
vim /etc/httpd/conf/httpd.conf
DirectoryIndex xue.html index.html
设置完成之后重新启动服务
注意:哪一个文件在前就先访问哪一个文件,当第一个文件不存在时才会访问下一个文件中的内容(并且文件的后缀为.html)
编辑xue.html文件
写入内容
测试:
当xue.html这个文件被删除后
rm -fr /var/www/html/xue.html
再次测试:
由于第一个文件被删除,所以访问下一个文件中的内容
编辑配置文件
vim /etc/httpd/conf/httpd.conf
注意:授权必须要添加不然无法访问
建立指定访问目录
mkdir /var/www/zyj/html -p
当新建的目录不在/var/www/html中时,需要修改/var/www/zyj/html的安全上下文才可以访问
semanage fcontext -a -t httpd_sys_content_t ‘/目录(/.*)?’
restorecon -RvvF /目录/ 刷新
systemctl restart httpd 重新启动服务
由于建立的文件在/var/www/中所以自动修改了安全上下文
测试:
建立实验素材:
mkdir /var/www/html/westos 创建一个目录
vim /var/www/html/westos/index.html 编辑默认访问文件
westosdir’s 目录 输入想要显示的字符
测试:查看是否设置成功
ip白名单
编辑主配置文件
vim /etc/httpd/conf/http.conf
Order Deny,Allow 先读Deny后读Allow
Allow from 172.25.254.208 允许这个ip访问
Deny from All 拒绝所有ip的访问
注意:Order意思时那个在前先读那个列表,名且后一个会覆盖前一个的内容
重新启动服务
systemctl restart httpd
测试:
ip=172.25.254.208
ip=172.25.254.8
ip 黑名单
编辑主配置文件
vim /etc/httpd/conf/http.conf
Order Allow,Deny 先读Deny后读Allow
Allow from All 允许所有ip访问
Deny from 172.25.254.208 拒绝172.25.254.208的访问
重新启动服务:
systemctl restart httpd
测试:
ip=172.25.254.208
ip=172.25.254.8
搭建实验素材
创建用户认证文件:
htpasswd -cm /etc/httpd/htpasswdfile admin 生成认证文件
注意:
当/etc/httpd/htpasswdfile存在那么在添加用户时不要加-c参数否则会覆盖源文件内容
注意:当有用户存在时想要添加新用户需要去掉c再添加不然会覆盖之前的用户认证
不删除c演示命令
例如:
当c去掉之后
例如:
编辑服务主配置文件:
AuthUserfile “/etc/httpd/htpasswdfile” 指定认证文件
AuthName “Please input your name and password” 认证提示语
AuthType basic 认证类型
Require user admin 允许通过的认证用户 2选1
Require valid-user 允许所有用户通过认证 2选1
Require这两个二选以,第一个是只允许这个用户登陆,第二个是两个都可以登陆。
重新启动服务:
systemctl restart httpd
测试:
当用westos登陆时
第一步:输入用户和密码
用户是在.htpasswdfile中的用户
访问成功
当用zyj登陆时
登陆时会一直卡在这个页面
由于zyj用户不被Require user 认证所以无法登陆
当设置Require valid-user时在.htpasswdfile中的两个用户都可以登陆
重新启动服务
测试:
现在两个用户都可以登陆
搭建实验环境
在子配置文件中编写名字.conf(后缀必须为.conf)
vim /etc/httpd/conf.d/xue.conf编辑建立的这个文件
创建所需要的目录和文件
mkdir -p /var/www/westos.com/{news,bbs,tieba}/html
echo news.westos.com > /var/www/westos.com/news/html/index.html
echo bbs.westos.com > /var/www/westos.com/bbs/html/index.html
echo tieba.westos.com > /var/www/westos.com/tieba/html/index.html
重新启动服务
在测试的主机中作地址解析
vim /etc/hosts
news.westos.com
bbs.westos.com
tieba.westos.com
编辑php的默认测试页
vim /var/www/html/index.php
修改默认测试页:
设置完成之后重新启动服务
安装可以查看php的插件
安装完成之后php或自动在/etc/httpd/conf.d/下生成配置文件
我们只需重新启动服务即可
测试:
让apache和其他软件沟通
CGI(Common Gateway Interface: 公用网关接口)规定了Web服务器调用其他可执行程序(CGI
程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,
将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。简单来说,从物理上讲cgi实际是运行在web服务器上的一段程序,提供了同客户端html页面的接口,任何符合cgi标准的程序都是cgi程序。
安装apache手册
安装之后重新启动服务
访问manual可以查看cgi帮助
建立cgi访问目录
mkdir -p /var/www/html/cgi 建立cgi访问目录
vim /var/www/html/cgidir/index.cgi 建立默认访问文件
修改cgi的安全上下文
semanage fcontext -l | grep cgi 查看cgi的安全上下文
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
编辑/var/www/html/cgi/index.cgi
由于cgi是一个脚本所以给它一个执行权限
chmod +x /var/www/html/cgi/index.cgi
运行这个脚本测试
编辑子配置文件
Options +ExecCGI
AddHandler cgi-script .cgi
测试:
这个结果是随着你的时间改变的
安装加密插件
mod_ssl.x86.64
重新启动http服务
在/etc/pki/tls/中生成证书,钥匙
测试:
https://172.25.254.108 访问
当出现以下界面按照图中点击
下一步
点击
查看你这个网址信息
生成证书
openssl genrsa -out /etc/pki/tls/private/www.westos.com.key 2048 生成私钥
注意:密码要大于或等于2048位
openssl req -new -key /etc/pki/tls/private/xue.westos.com.key-out /etc/pki/tls/certs/xue.westos.com.csr 生成证书签名文件
openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.westos.com.csr -signkey /etc/pki/tls/private/www.westos.com.key -out /etc/pki/tls/certs/www.westos.com.crt 生成证书
x509 | 证书格式 |
---|---|
-req | 请求 |
-in | 加载签证名称 |
编辑ssl的配置文件
重新启动http服务
按照之前步骤再次进入查看
网页信息被修改
^(/.*)$ | 客户地址栏中输入的地址 |
---|---|
%{HTTP_HOST} | 客户主机 |
$1 | RewriteRule后面跟的第一串字符的值 |
建立一个属于xuepang.westos.com的目录
重新启动http服务
测试:
可以使用http://xuepang.westos.com进入可以看到跳转
此实验需要三个主机
实验环境:
单网卡主机设定ip不能上网
双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网
实验效果
让单网卡主机不能上网但浏览器可以访问互联网页
操作:
在网卡主机中操作
dnf install squid -y
编辑配置文件
/etc/squid/squid.conf
打开如下两个
重新启动squid服务
firewall-cmd --permanent --add-port=3128/tcp 添加3128端口
firewall-cmd --reload 重新启动服务
在不可上网的主机中设置
打开firefox进行设置
进入之后操作如图所示
操作完成后刷新,开始测试:
在单网卡主机中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
输入www.baidu.com的网址
ping www.baidu.com ping不通
实验环境:
192.168.1.8 Apache 服务器
192.168.1.18 squid,没有数据负责缓存
编辑squid的主配置文件
vim /etc/squid/squid.conf
http_port 80 vhost vport vhost 支持虚拟域名 vport 支持虚拟端口
当192.168.1.18 的80 端口被访问会从192.168.1.8 的80 端口缓存数据
cache_peer 192.168.1.8 parent 80 0 proxy-only
systemctl restart squid.service
测试:
192.168.1.8上的数据
编辑默认配置文件
写入数据
访问192.168.1.18这台主机的数据,但是现实的却是192.168.1.8这台主机的数据