目录
1.Apache的作用
在web被访问时通常使用http://的方式
http:// ##超文本传输协议http:// 超文本传输协议提供软件:
Apache
nginx
stgw
jfe
Tengine
2.Apache的安装
dnf install httpd -y
3.Apache的启用
firewall-cmd --permanent --add-service=http #在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https #在火墙中永久开启https访问
firewall-cmd --reload #刷新火墙使设定生效
systemctl enable --now httpd #开启服务并设定服务位开机启动
vim /var/www/html/index.html #修改Apache默认网页
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的基本配置
5.1.Apache端口修改
vim /etc/httpd/conf/httpd.conf
Listen 8080
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
systemctl restart httpdhttp://172.25.254.221:8080
5.2.默认发布文件
vim /etc/httpd/conf/httpd.conf
DirectoryIndex westos.html index.html
systemctl restart httpd
5.3.默认发布目录mkdir /westos
vim /westos/index.html
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?' #更改为httpd可以识别的安全上下文
restorecon -RvvF /westos/vim /etc/httpd/conf/httpd.conf
DocumentRoot "/westos"
<Directory "/westos">
Require all granted
</Directory>
systemctl restart httpdfirefox http://172.25.254.221
6.Apache的访问控制
实验素材
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
sdfdsfsd
firefox http://172.25.254.221/westos
6.1.基于客户端ip的访问控制
ip白名单
<Directory "/var/www/html/westos">
Order Deny,Allow #黑名单在前,白名单在后
Allow from 172.25.254.21 #允许21登陆
Deny from All
</Directory>
ip黑名单
<Directory "/var/www/html/westos">
Order Allow,Deny #白名单在前,黑名单在后
Allow from All
Deny from 172.25.254.21 #禁止21登陆
</Directory>
6.2 .基于用户认证
cd /etc/httpd/
htpasswd -cm .htpasswd admin #创建认证文件 -c 创建 -m 设定
New password:
Re-type new password:
htpasswd -m .htpasswd admin1 #添加新认证不用-c,否则会覆盖原先内容
New password:
Re-type new password:
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/westos">
AuthUserfile /etc/httpd/htpasswd #指定认证文件
AuthName "Please input your name and password" #认证提示语
AuthType basic #认证类型
Require user admin #允许指定的认证用户admin进入 2选1 user admin和valid-user
Require valid-user #允许所有认证用户进入 2选1 user admin和valid-user
</Directory>
输入正确的用户名密码即可登陆
测试可以ctrl+shift+Delete删除历史和缓存
7. Apache的虚拟主机
mkdir -p /var/www/vhost/westos.org/{news,music,map}
echo news.westos.org >/var/www/vhost/westos.org/news/index.html
echo music.westos.org >/var/www/vhost/westos.org/music/index.html
echo map.westos.org >/var/www/vhost/westos.org/map/index.html
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
Customlog logs/default.log combined
</VirtualHost><VirtualHost *:80>
ServerName music.westos.org
DocumentRoot /var/www/vhost/westos.org/music
Customlog logs/music.log combined
</VirtualHost><VirtualHost *:80>
ServerName news.westos.org
DocumentRoot /var/www/vhost/westos.org/news
Customlog logs/news.log combined
</VirtualHost><VirtualHost *:80>
ServerName map.westos.org
DocumentRoot /var/www/vhost/westos.org/map
Customlog logs/map.log combined
</VirtualHost>
测试:
在打开浏览器所在的主机中
vim /etc/hosts172.25.254.221 www.westos.org music.westos.org news.westos.org map.westos.org
firefox http://www.westos.org
firefox http://news.westos.org
firefox http://map.westos.org
8. Apache的语言支持
dnf install php -y
phpvim /var/www/html/index.php
<?php
phpinfo();
?>
systemctl restart httpd
firefox http://172.25.254.221/index.php
cgi
mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;这不是单引号'',而是波浪号``chmod +x /var/www/html/cgidir/index.cgi
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgidir(/.*)?'
restorecon /var/www/html/cgidir/vim /etc/httpd/conf.d/vhost.conf
<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>firefox http://172.25.254.221/cgidir/index.cgi
#wsgi#
书写wsgi的测试文件
dnf install python3-mod_wsgivim /var/www/html/wsgi/index.wsgi
def application(env, westos):
westos('200 ok',[('Content-Type', 'text/html')])
return [b'hello westos hahahahahah!']
systemctl restart httpdvim /etc/httpd/conf.d/vhost
<VirtualHost *:80>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/wsgi/index.wsgi
</VirtualHost>
在打开浏览器所在的主机中
vim /etc/hosts
172.25.254.221 wsgi.westos.org
网页打开只能输入域名,ip不生效,不安全
9.Apache的加密访问
certs 证书
private 锁
x509 证书格式dnf install mod_ssl -y
mkdir /etc/httpd/tls
openssl req --newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/tls/westos.org.key -x509 -days 365 -out /etc/httpd/tls/westos.org.crt
mkdir /var/www/vhost/westos.org/login
vim /var/www/vhost/westos.org/login/index.html
login.westos.org
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName login.westos.org
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</VirtualHost><VirtualHost *:443>
ServerName login.westos.org
DocumentRoot /var/www/vhost/westos.org/login
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/httpd/tls/westos.org.crt
SSLCertificateKeyFile /etc/httpd/tls/westos.org.key
</VirtualHost>
systemctl restart httpd
^(/.*)$ ##客户地址栏中输入的地址
%{HTTP_HOST} ##客户主机
$1 ##RewriteRule后面跟的第一串字符的值主机中 vim /etc/hosts
172.25.254.221 www.westos.org music.westos.org news.westos.org map.westos.org wsgi.westos.org login.westos.org
10.Squid+Apache
10.1 squid 正向代理
实验环境:
主机a设定ip,不能上网
主机b设定GATEWAY,DNS可以连接主机a,可以上网实验效果
让主机A不能上网但浏览器可以访问互联网页操作:
在主机B中
dnf install squid -y #安装代理服务
vim /etc/squid/squid.conf #修改配置文件
59行 http_access allow all
65行 cache_dir ufs /var/spool/squid 100 16 256systemctl restart squid
netstat -antlupe | grep squid #查看端口
firewall-cmd --permanent --add-service=squid
##firewall-cmd --permanent --add-port=3128/tcpfirewall-cmd --reload
在主机a中浏览器选择Preferences,Network Settings
Manual proxy configuration
172.25.254.30 3128
选择use this proxy server for all protocols
测试:
在主机a中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
10.2 squid反向代理
实验环境:
172.25.254.221 ##Apache服务器
172.25.254.121 ##squid,没有数据负责缓存
121里设置
vim /etc/squid/squid.conf
http_port 80 vhost vport ##vhost 支持虚拟域名 vport 支持虚拟端口cache_peer 172.25.254.221 parent 80 0 proxy-only
#当172.25.254.121的80端口被访问会从172.25.254.221的80端口缓存数据systemctl restart squid
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
221里设置
dnf install httpd -y
echo 172.25.254.221 > /var/www/html/index.html
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
测试:
firefox http:/172.25.254.30
访问看到的时172.25.254.20上的数据