1.Apache的作用
在web被访问时通常使用 http:// 的方式 ## http:// 超文本传输协议
http:// 超文本传输协议提供软件:
Apache
nginx
stgw
jfe
Tengine
2.Apache的安装
先配置yum源,然后执行
dnf install httpd.x86_64 -y
3.Apache的启用
安装完成后访问ip无法访问:
所以应配置火墙:
systemctl enable --now httpd ##开启服务并设定服务位开机启动,企业7和8操作相同
firewall-cmd --list-all ##查看火墙信息
firewall-cmd --get-services #查看服务名
firewall-cmd --permanent --add-service=http ##在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https ##在火墙中永久开启https访问
firewall-cmd --reload ##刷新火墙使设定生效
再次访问,成功
4.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
5.Apache的基本配置
1.Apache端口修改#
vim /etc/httpd/conf/httpd.conf
添加Listen 8080
端口更改成功。
firewall-cmd --permanent --add-port=8080/tcp #添加端口
firewall-cmd --reload #重新加载
访问成功。
但当我们吧端口改为6666时
vim /etc/httpd/conf/httpd.conf
Listen 6666
当selinux开启时会报错。设置为警告模式时服务可以启动,且端口打开
firewall-cmd --permanent --add-port=6666/tcp
firewall-cmd --reload
semanage port -l | grep http #查看允许的端口,发现无6666端口,有8888端口
semanage port -a -t http_port_t -p tcp 6666
加入6666端口
更改selinux为强制模式
重启服务,systemctl restart httpd
可以重启。更改成功
2.默认发布文件修改
编写index.html文件 #index.html为默认识别文件
用火狐浏览器查看:
出现相应内容。
创建 westos.html 文件:
必须在ip地址后面加上文件名才能够访问,这个是因为不是默认识别文件,如何更改那:
vim /etc/httpd/conf/httpd.conf
重启服务:
systemctl restart httpd
此时输入默认ip就可以访问到 westos.html 的内容了
3.默认发布目录
建立 /westos/html 目录,在里面建立 index.html 文件
无法访问,访问的是 /var/www/html/index.html 中的内容
更改默认发布目录 :
vim /etc/httpd/conf/httpd.conf
将
更改为
更改后依然无法访问,
因为安全上下文和默认的 /var/www/ 目录不同,所以应该更改安全上下文和 /var/www/ 的相同
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
restorecon -RvvF /westos/
systemctl restart httpd
firefox http://192.168.0.11
访问成功。
6.Apache的访问控制
#实验素材#
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
< h1 > westosdir’s page< /h1 >
可以访问。
#1.基于客户端ip的访问控制#
#ip白名单#
<Directory “/var/www/html/westos”>
Order Deny,Allow
Allow from 192.168.0.10
Deny from All
</Directory>
先读取Deny,在读取Allow,Order为顺序。
120主机访问不允许。
110主机访问允许
#ip黑名单#
<Directory “/var/www/html/westos”>
Order Allow,Deny
Allow from All
Deny from 192.168.0.110
</Directory>
先读取Allow,后读取Deny
110主机访问不允许。
120主机访问允许
#2.基于用户认证#
vim /etc/httpd/conf/httpd.conf
<Directory “/var/www/html/westos”>
AuthUserfile /etc/httpd/htpasswdfile ##指定认证文件
AuthName “Please input your name and password” ##认证提示语
AuthType basic ##认证类型
Require user admin ##允许通过的认证用户 2选1
Require valid-user ##允许所有用户通过认证 2选1
htpasswd -cm /etc/httpd/htpasswdfile admin ## -c 创建,生成认证文件
注意:
当 /etc/httpd/htpasswdfile 文件存在时那么在添加用户时不要加 -c 参数否则会覆盖源文件内容
已经创立两个用户,westos 和 admin,此时在访问的时侯会出现下面界面
要求你输入账号和密码,输入刚才建立的用户和密码就访问成功了。
7.Apache的虚拟主机
一个ip对应多个站点。
mkdir -p /var/www/westos.com/{news,wenku} #建立虚拟主机目录
echo "wenku.westos's page" >/var/www/westos.com/wenku/index.html #不同的目录主页输入不同的内容
echo "news.westos's page" > /var/www/westos.com/news/index.html
echo "default westos's page" > /var/www/html/index.html #默认主页
我们想让当:
访问 wenku.westos.com时看到 wenku.westos.com’s page
访问 news.westos.con时看到 news.westos.com’s page
访问 www.westos.com时看到 default westos’s page
vim /etc/httpd/conf.d/Vhost.conf #编写配置文件
成功。
测试方法:
在浏览器所在主机中
vim /etc/hosts #编写本地解析
192.168.0.120 www.westos.com wenku.westos.ocm news.westos.com
然后测试访问:
firefox http://www.westos.com
firefox http://wenku.westos.com
firefox http://news.westos.com
8.Apache的语言支持
#html# 默认支持
#php#
vim /var/www/html/index.php
dnf install php -y #安装php
systemctl restart httpd #重启服务
firefox http://192.168.0.11/index.php
进入默认访问页,则支持成功。
#perl / cgi#
vim /var/www/html/cgidir/index.cgi
chmod +x index.cgi
index.cgi 是一个执行脚本,给一个执行权限。
访问时:
看出代码没有执行,
编写配合文件,让Apache访问。并
setenforce 0
firefox http://192.168.0.11/cgidir/index.cgi
9.Apache的加密访问
首先在Apache服务器上安装 mod_ssl 插件
yum install mod_ssl -y
在 /etc/httpd/con.d/下会生成 ssl.conf 的配置文件
放我们访问https时需要添加我们的证书,点击advanced
点击Add Exception:
点击 Confirm:
就可以访问了,点击上面的锁,我们可以看到证书的内容:
但证书是默认的,不是我们自己的,先删除这个证书,那么如何去生成自己的证书那?:
openssl genrsa -out /etc/pki/tls/private/www.westos.com.key 2048 \#生成私钥 -out 输出至文件
openssl req -new -key /etc/pki/tls/private/www.westos.com.key \
-out /etc/pki/tls/certs/www.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 加载签证名称
-signkey 指定签证key文件
编写配置文件,匹配证书位置:
vim /etc/httpd/conf.d/vhost.conf
再次访问
就是我们的证书了。
实验:
mkdir /www/westos/{wenku,news,login} -p
echo "wenku's page" > /www/westos.com/wenku/index.html
echo "news's page" > /www/westos.com/news/index.html
echo "login's page" > /www/westos.com/login/index.html
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?' 更改安全上下文
restorecon -RvvF /www/ 刷新安全上下文
vim /etc/httpd/conf.d/vhost.conf 编写配置文件
尝试访问:
发现 login.westos.com 访问的页面是默认页面,不是他自己的内容,因为他默认访问80端口,而我们要访问443端口,我们可以上方地址栏输入 https://login.westos.com 然后下载证书访问,那如何用配置文件方式开启网页重写功能,让它自动跳转到https :
vim /etc/httpd/conf.d/vhost.conf
^(/.*)$ ##客户地址栏中输入的地址
%{HTTP_HOST} ##客户主机
$1 ##RewriteRule后面跟的第一串字符的值
systemctl restart httpd
访问时自动跳转到了https。
10.Squid+Apache
squid是一个典型的翻墙软件
#squid 正向代理#
实验环境:
单网卡主机设定ip不能上网
双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网:ping通www.baidu.com。
实验效果
让单网卡主机不能上网但浏览器可以访问互联网页
操作:
在双网卡主机中
dnf install squid -y 安装squid
vim /etc/squid/squid.conf
systemctl restart squid
可以看出产生了 /var/spool/squid 下产生了16个目录,并且下面有256个二级目录
firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
在单网卡网页选项中选择
NetWork Proxy
172.25.254.130 3128
测试:
在单网卡主机中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
正向代理成功。
#squid反向代理#
实验环境:
192.168.0.11 ##Apache服务器
192.168.0.13 ##squid,没有数据,负责缓存
vim /etc/squid/squid.conf
http_port 80 vhost vport ##vhost 支持虚拟域名 vport 支持虚拟端口
cache_peer 192.168.0.11 parent 80 0 proxy-only #当192.168.0.12的80端口被访问会
从192.168.0.11的80端口缓存数据
firewall-cmd --permanent --add-port=80/tcp 添加端口
firewall-cmd --reload
systemctl restart squid
最后设置:
测试:
firefox http://192.168.0.12
访问看到的时192.168.0.11上的数据则反向代理成功。