3.3#Apache的管理及优化web

本文介绍了Apache在Linux系统中的作用、安装、启用、配置,包括端口修改、默认发布文件和目录设置、访问控制(IP黑白名单和用户认证)、虚拟主机配置、语言支持(PHP、CGI、WSGI)以及加密访问的实现。此外,还详细讲解了Squid作为正向代理和反向代理的配置方法。
摘要由CSDN通过智能技术生成

 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         ##刷新火墙使设定生效

4.Apache的基本信息 

服务名称:httpd

配置文件:

/etc/httpd/conf/httpd.conf ##主配置文件

/etc/httpd/conf.d/*.conf ##子配置文件

默认发布目录:

/var/www/html

默认发布文件:

/var/www/html/index.html

默认端口:

        #http          80

        #https        443

用户:

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

systemctl restart httpd

http://172.25.254.100:8080

#2.默认发布文件##

vim /var/www/html/index.html

        index

vim /var/www/html/westos.html

        westos

vim /etc/httpd/conf/httpd.conf

        DirectoryIndex westos.html index.html

systemctl restart httpd

#3.默认发布目录

/var/www/html

mkdir /var/www/westos

mv /var/www/westos /var

vim /etc/httpd/conf/httpd.conf

DocumentRoot "/var/westos"        ##默认发布目录

<Directory "/var/westos">

Require all granted        

</Directory>

systemctl restart httpd

firefox http://172.25.254.31

6.Apache的访问控制

#实验素材#

mkdir /var/www/html/westos

vim /var/www/html/westos/index.html

<h1>westosdir's page</h1>

firefox http://172.25.254.31/westos/

#1.基于客户端ip的访问控制#

#ip白名单#

<Directory "/var/www/html/westos">

Order Deny,Allow

Allow from 192.168.0.10

Deny from All

</Directory>

#ip黑名单#

<Directory "/var/www/html/westos">

Order Allow,Deny

Allow from All

Deny from 192.168.0.10

</Directory>

#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

</Directory>

htpasswd -cm /etc/httpd/htpasswdfile admin         ##生成认证文件

注意:

/etc/httpd/htpasswdfile存在那么在添加用户时不要加-c参数否则会覆盖源文件内容

 

7.Apache的虚拟主机

mkdir -p /var/www/westos.com/{news,wenku}

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

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>

systemctl restart httpd

测试:

在浏览器所在主机中

vim /etc/hosts

172.25.254.31  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的语言支持 ######

#php#

vim /var/www/html/index.php

<?php

phpinfo();

?>

dnf install php -y

systemctl restart httpd

firefox http://192.168.0.11/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`;

vim /etc/httpd/conf.d/vhost.conf

<Directory "/var/www/html/cgidir">

Options +ExecCGI

AddHandler cgi-script .cgi

</Directory>

firefox http://172.25.254.31/cgidir/index.cgi

在浏览器所在真实主机访问该index.cgi文件时,页面直接显示的是该文件的文本内容,即index.cgi文件中的代码不执行,这表明Apache不支持perl语言

 编写httpd服务的主配置文件,在文件最后添加对于/var/www/html/cgi目录,指定触发器识别该目录下以.cgi结尾的文件并执行CGI,接着重启httpd服务,给index.cgi文件赋予可执行权限

#wsgi#

书写wsgi的测试文件

#vim /var/www/html/wsgi/index.wsgi

def application(env, westos):

  westos('200 ok',[('Content-Type', 'text/html')])        ##注意首行缩进两个字符

  return [b'hello westos ahhahahahah!']    ##注意首行缩进两个字符

在浏览器所在真实主机访问该index.wsgi文件时,页面不发布文件内容,直接提示下载该文件,即index.wsgi脚本不执行,这表明Apache不具备执行该脚本的能力

 这时我们需要从软件仓库中下载安装python-mod_wsgi插件,安装完成后重启httpd服务,此时再次访问该index.wsgi文件需要用指定参数(域名)去进行访问

dnf install python3-mod_wsgi

systemctl restart httpd

vim /etc/httpd/conf.d/vhost

<VirtualHost *:80>

ServerName wsgi.westos.org

WSGIScriptAlias / /var/www/html/wsgi/index.wsgi

</VirtualHost>

 

 在浏览器所在真实主机中访问wsgi.westos.org时,index.wsgi脚本执行,页面显示hello westos,此时Apache具备执行index.wsgi脚本的能力,支持python语言

###### 9.Apache的加密访问 ######

##安装加密插件

dnf install mod_ssl -y##生成证书

##command 1

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

##command 2

openssl req --newkey rsa:2048 \

-nodes -sha256 -keyout /etc/httpd/westos.org.key \

-x509 -days 365 -out /etc/httpd/westos.org.crt

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后面跟的第一串字符的值

在这里插入图片描述

 在这里插入图片描述在这里插入图片描述在这里插入图片描述

 出于安全性考虑,当客户主机使用非加密方式访问时我们需要将其转换成加密方式来进行访问 ,在httpd的共享位置/var/www目录中建立login目录,在该目录下编写其发布文件index.html,编写虚拟主机配置文件/etc/httpd/vhost.conf如下,重启httpd服务

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述在这里插入图片描述

 在浏览器所在真实主机中访问login.westos.org时,浏览器会以加密方式https转入登录页面,该页面默认发布/var/www/login目录下的index.html文件

10.Squid+Apache 

#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.30 3128

测试:

在单网卡主机中

ping www.baidu.com

不通

在浏览器中访问www.baidu.com可以

实验步骤:

1)在真实主机中连上无线网,开启防火墙地址伪装功能,将真实主机变为路由器

在这里插入图片描述

2)编写westosb的网卡配置文件,设定其网关为真实主机ip,为westosb配置DNS解析,重启网络,开启连接,此时虚拟主机westosb和真实主机可以通信,且westosb可以上网(ping 通百度)
在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

 3)编写westosa的网卡配置文件,此时虚拟主机westosa和真实主机可以通信,但不能上网(ping 不通百度)

在这里插入图片描述

 4)在westosb中安装代理软件squid,编写配置文件,开启代理服务squid并设定服务开机时自动启动,在防火墙中永久开启squid访问

 在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

 5)在westosa的浏览器页面中的网络设置里手动输入代理http服务器IP和使用的通信端口号

在这里插入图片描述

 在这里插入图片描述

6)代理设置完成后westosa仍然不能上网(ping 不通百度),但可以浏览www.baidu.com

在这里插入图片描述

#squid反向代理#

实验环境:

172.25.254.20

##Apache服务器

172.25.254.30

##squid,没有数据负责缓存

vim /etc/squid/squid.conf

http_port 80 vhost vport ##vhost 支持虚拟域名 vport 支持虚拟端口

#当172.25.254.30的80端口被访问会从172.25.254.20的80端口缓存数据

cache_peer 172.25.254.20 parent 80 0 proxy-only

systemctl restart squid

测试:

firefox http:/172.25.254.30

访问看到的时172.25.254.20上的数据

步骤:

1)在westosb中编写squid的配置文件并重启,在防火墙中永久开启http访问

在这里插入图片描述
在这里插入图片描述

 2)在真实主机浏览器中访问westosb,显示westosa默认共享目录/var/www/html下index.html中的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值