Apache 的管理及优化web
一.Apache的作用
在web被访问时通常使用http://的方式
http:// 超文本传输协议
http:// 超文本传输协议提供软件:
Apache
nginx
stgw
jfe
Tengine
二.Apache的安装
dnf install httpd.x86_64 -y
三.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 刷新火墙使设定生效
或者关闭火墙
setenforce 0
四.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
五.Apache的基本配置
1.Apache端口修改
vim /etc/httpd/conf/httpd.conf
Listen 8080
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
systemctl restart httpd
vim /etc/httpd/conf/httpd.conf
将45行的80
更改为8080:
更改端口:
http://172.25.254.130:8080
2.默认发布文件
vim /etc/httpd/conf/httpd.conf
DirectoryIndex westos.html index.html 哪个文件在前哪个优先访问
vim /var/www/html/westos.html Hello westos
systemctl restart httpd
将如下的167行:
更改为:
默认访问westos.html
当我们将westos.html删除:
再次访问,便会默认访问index.html:
3.默认发布目录
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/webdir/html"
**<Directory "/var/webdir/html">
Require all granted
</Directory>**
mkdir -p /var/webdir/html
vim /var/webdir/html/index.html 编辑内容
semanage fcontext -a -t httpd_sys_content_t '/webdir(/.*)?'
restorecon -RvvF /webdir/
systemctl restart httpd
验证:firefox http://172.25.254.130
六.Apache的访问控制
#实验素材#
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
westosdir's page
firefox http://192.168.0.11/westos
1.基于客户端ip的访问控制
ip白名单
<Directory "/var/www/html">
Order Deny,Allow
Allow from 172.25.254.30
Deny from All
</Directory>
ip黑名单
<Directory "/var/www/html/westos">
Order Allow,Deny
Allow from All
Deny from 172.25.254.30
</Directory>
尝试用172.25.254.30访问,显示访问被拒绝:
当我们将172.25.254.30移除后,允许访问时,再次访问成功!!!!
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 生成认证文件
$:
当/etc/httpd/htpasswdfile存在那么在添加用户时不要加-c参数否则会覆盖源文件内容
七.Apache的虚拟主机
mkdir -p /var/www/westos.com/{news,linux}
echo "linux's page" >/var/www/westos.com/linux/index.html
echo "news's page" > /var/www/westos.com/news/index.html
echo "default's page" > /var/www/html/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 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>
测试:
在浏览器所在主机中
vim /etc/hosts
172.25.254.130 www.westos.com wenku.westos.ocm news.westos.com
在三个目录中建立的文件录入以下内容:
在真机打开:
在该文件中插入:
然后访问网页:
八.Apache的语言支持
php
vim /var/www/html/index.php
<?php phpinfo(); ?>dnf install php -y
systemctl restart httpd
firefox http://172.25.254.101/index.php
cgi
mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi
chmod +x index.cgi 给执行权限
!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`
vim /etc/httpd/conf.d/Vhost.conf
<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
irefox http://192.168.0.11/cgidir/index.cgi
wsgi
vim /var/www/html/wsgidir/index.wsgi
def application(env,start_response):
start_response(‘200 OK’,[(‘Content-Type’,‘text/html’)])
return[b"hello world"]
chmod +x index.wsgi
vim /etc/httpd/conf.d/Vhost.conf
<VirtualHost *:80>
serverName wsgi.westos.com
WSGIScriptAlias / /var/www/html/wsgidir/index.wsgi
</VirtualHost>
dnf install python3-mod_wsgi.x86_64
systemctl restart httpd
九.Apache的加密访问
1.安装加密插件
dnf install mod_ssl -y
2.生成证书
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 /etc/pki/tls/private/www.westos.com.key
添加:
3.生成证书签名文件
4.生成证书
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</VirtualHost>
<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>
$:
systemctl restart httpd
^(/.*)$ 客户地址栏中输入的地址
%{HTTP_HOST} 客户主机
$1 RewriteRule后面跟的第一串字符的值
十、Squid+Apache
squid 正向代理
实验环境:
单网卡主机设定ip不能上网
双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网
实验效果
让单网卡主机不能上网但浏览器可以访问互联网页
操作:
在双网卡主机中(172.25.254.1)
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
在单网卡专辑中选择 (172.25.254.101)
NetWork Proxy
172.25.254.1 3128
测试:
在单网卡主机中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
vim /etc/squid/squid.conf
squid反向代理
实验环境:
172.25.254.130 Apache服务器
172.25.254.30 squid,没有数据负责缓存
vim /etc/squid/squid.conf
http_port 80 vhost vport vhost 支持虚拟域名 vport 支持虚拟端口
当172.25.254.130的80端口被访问会从172.25.254.230的80端口缓存数据
cache_peer 172.25.254.101 parent 80 0 proxy-only
80端口 没有备用代理 只作代理
systemctl restart squid
测试:
firefox http:/172.25.254.1
访问看到的时172.25.254.101上的数据systemctl restart squid