文章目录
准备工作
克隆一台新的rhel8
设置网络
搭建yum仓库
不开图形
1、Apache的作用
在web被访问时通常使用http://的方式
http:// #超文本传输协议
http://超文本传输协议提供软件:
Apache
nginx
stgw
jfe
Tengine
2、Apache的安装
dnf install httpd.x86_64 -y
3、Apache的启用
systemctl enable --now httpd #开启服务并设定服务为开机启动
firewall-cmd --list-all #查看火墙信息
firewall-cmd --permanent --add-service=http #在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https #在火墙中永久开启https访问
firewall-cmd --reload #刷新火墙使设定生效
开启没有生效
rhel7http://192.168.1.100
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 6666
firewall-cmd --permanent --add-port=6666/tcp
firewall-cmd --reload
semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 6666
systemctl restart httpd
火墙未允许使用8080端口
(2)默认发布文件
vim /etc/httpd/conf/httpd.conf
DirectoryIndex westos.html index.html
systemctl restart httpd
若index.html不存在,访问Apache的默认测试页,否则,访问文件内容。
修改端口
先访问westos.html,再访问index.html
(3)默认发布目录
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/westos/html"
<Directory "/westos/html">
Require all granted
</Directory>
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
restorecon -RvvF /westos/
systemctl restart httpd
firefox http://192.168.1.100
6、Apache的访问控制
实验素材
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
<h1>westosdir's page</h1>
firefox http://192.168.1.100/westos
(1)基于客户端IP的访问控制
IP白名单
<Directory "/var/www/html/westos">
Order Deny,Allow
Allow from 192.168.1.200
Deny from All
</Directory>
IP黑名单
<Directory "/var/www/html/westos">
Order Allow,Deny
Allow from All
Deny from 192.168.1.200
</Directory>
先读Allow,再读Deny,Deny覆盖Allow中的内容,范围小要后读
用rhel8访问
(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 #允许所有用户通过认证
</Directory>
htpasswd -cm /etc/httpd/htpasswdfile admin #生成认证文件
注意:当/etc/httpd/htpasswdfile存在,那么在添加用户时不要加-c参数,否则会覆盖原文件内容
systemctl restart httpd
若文件/etc/httpd/htpasswdfile不存在+c,若存在后+c文件中原来内容会被清除
指定用户admin可以访问
7、Apache的虚拟主机
mkdir /var/www/westos.com/{news,wenku} -p
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
wenku.westos.com————>wenku's page
news.westos.com————>news's page
www.westos.com————>default's page
设定客户端解析(浏览器所在的主机中)
vim /etc/hosts
192.168.1.100 www.westos.com news.westos.com wenku.westos.com
vim /etc/httpd/conf.d/VirtHost.conf
<VirtualHost _default_:80>
DocumentRoot "/var/www/html"
CustomLog logs/default.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName wenku.westos.com
DocumentRoot "/var/www/westos.com/wenku"
CustomLog logs/wenku.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot "/var/www/westos.com/news"
CustomLog logs/news.log combined
</VirtualHost>
systemctl restart httpd
修改本地解析
news.westos.com————>/var/www/westos.com/news/index.html
news.wenku.com————>/var/www/westos.com/wenku/index.html
当访问不同站点时,访问的是不同页面
安装Apache手册
8、Apache的语言支持
html #默认支持
php
perl
asp
jsp
(1)html
(2)php
vim /var/www/html/index.php
<?php
phpinfo();
?>
dnf install php.x86_64 -y
systemctl restart httpd
firefox http://192.168.1.200/index.php
php默认测试页
(3)perl
cgi
mkdir -p /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print `date`;
vim /etc/httpd/conf.d/VirtHost.conf
<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd
firefox http://192.168.1.200/cgidir/index.cgi
9、Apache的加密访问
生成证书之前把已加载的证书删除
rhel7中
rhel8生成证书
openssl genrsa -out /etc/pki/tls/private/www.westos.com.key 2048
#生成私钥
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/VirtHost.conf
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot "/www/westos.com/login"
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</VirtualHost>
^(/.*)$ #客户主机在浏览器地址栏中输入的字符
https:// #强制客户访问加密
%{HTTP_HOST} #客户主机
$1 #$1表示RewriteRule后所接入的第一串字符
测试:
vim /etc/hosts
192.168.1.100 login.com
firefox http://login.westos.com
当访问此网页时会自动跳转到https://login.westos.com
rhel7中
需手动填写https
自动跳转
10、Squid+Apache
(1)squid正向代理
实验环境:
单网卡主机设定ip不能上网
双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网
实验效果:
让单网卡主机不能上网但浏览器可以访问互联网络
操作:
在双网卡主机中
dnf install squid -y
vim /etc/squid/squid.conf
59 http_access allow all
65 cache_dir ufs /var/spool/squid 100 16 256
systemctl restart squid
firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
在单网卡主机中选择
NetWork Proxy
172.25.254.13 3128
测试:
在单网卡主机中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
Apache所在主机:
不能上网
另一台rhel8:
可上网,另给其增加一块网卡
Apache所在主机
(2)squid反向代理
实验环境:
192.168.1.11 #Apache服务器
192.168.1.150 #squid,没有数据负责缓存
vim /etc/squid/squid.conf
http_port 80 vhost vport #vhost支持虚拟域名,vport支持虚拟端口
cache_peer 192.168.1.11 parent 80 0 proxy-only
#当192.168.1.150的80端口被访问会从192.168.1.11的80端口缓存数据
systemctl restart squid
测试:
firefox http://192.168.1.150
访问看到的是192.168.1.11上的数据