瑞星 发表于 2024-6-23 19:28:28

Apache服务的搭建与设置(超详细版)

前言 
           Apache是一种常见的Web服务器软件,广泛用于Linux和其他UNIX操作系统上。它是自由软件,可以通过开放源代码的方式举行自由分发和修改。Apache提供了处理静态和动态内容的能力,而且还支持多种编程语言和脚本,如PHP、Python和Perl。此外,Apache还支持SSL、TLS和虚拟主机等功能,可以很好地满足大量的Web应用程序的需求。
目次
1 Apache服务的搭建
 1.1 预备环境
 1.2 安装Apache
 1.3 Apache设置文件 
 1.4 启动Apache
 1.5 查看服务是否启动
 1.6 访问验证httpd服务
2 Apache设置实例
 2.1 实例一 
 2.2 实例二
 2.3 实例三
 2.4 实例四
 2.5 Apache常用命令
3 Apache设置用户认证 
 3.1 预备环境
 3.2 下载压缩包
 3.3 解压压缩包
 3.4 设置
 3.5 编译安装
 3.6 检查设置文件有无语法错误
 3.7 Apache设置用户认证
  3.7.1 编辑文件
  3.7.2 打开模块  
  3.7.3 htpasswd天生密码文件  
 3.8 加载设置并启动
 3.9 测试 
4  Apache设置默认虚拟主机
 4.1 编辑主设置文件
 4.2 开启模块
 4.3 编辑文件
 4.4 测试
  4.4.1 预备
  4.4.2 添加当地剖析
  4.4.3 启动服务 
  4.4.4 测试(Ctrl+c停止进程)
5 Apache设置rewrite规则
 5.1 预备
 5.2 开启模块 
 5.3 编辑文件
 5.4 检查设置文件有无语法错误
 5.5 添加当地剖析
 5.6 重新加载下设置文件
 5.7 测试
 5.8 克制指定user_agent
 5.9 通过rewrite限定某个目次
 5.10 rewrite变量 
6  Apache设置日志切割与管理
 6.1 Apache主设置文件日志相关格式规定
 6.2  日志切割
  6.2.1 预备
  6.2.2 修改文件
  6.2.3 重启设置
  6.2.4 修改时间
  6.2.5 测试
 6.3 不记载订定文件范例的日志
7 设置静态缓存
 7.1 开启模块
 7.2 编辑文件
 7.3 测试
8  Apache设置防盗链
 8.1 预备
 8.2 设置防盗链
9 Apache访问控制

1 Apache服务的搭建

 1.1 预备环境

(1)关闭防火墙
systemctl stop firewalld 【永世关闭防火墙 systemctl disable firewalld】
systemctl disable firewalld https://img-blog.csdnimg.cn/4d4a10b2c51545b1a10ef99e1825a1de.png
(2)关闭SELinux
修改设置文件
vi /etc/selinux/config  #将SELINUX=enforcing修改为SELINUX=disabled。
https://img-blog.csdnimg.cn/0ace0595c5f4465582c3934d879a9699.png
setenforce 0  【永世关闭SELinux,重启生效,利用reboot命令】
reboot  1.2 安装Apache

yum -y install httpd https://img-blog.csdnimg.cn/31c2b117f88c47478a11f3ea6b80bd08.png
   安装成功后,会产生下面两个文件:
#主设置文件              /etc/httpd/conf/httpd.conf
#默认网网站家目次   /var/www/html
 1.3 Apache设置文件 

   /etc/httpd/conf/httpd.conf           
serverRoot "/etc/httpd"                                  #存放设置文件的目次
Listen 80                                                       #Apache服务监听端口
User apache                                                   #子进程的用户
Group apache                                                 #子进程的组
serverAdmin root@locahost                            #设置管理员邮件地点
DocumentRoot "/var/www/html"                      #网站家目次

#设置DocumentRoot指定目次的属性
<Directory "/var/www/html">                                  # 网站容器开始标识
Options Indexes FollowSymLinks                    #找不到主页时,以目次的方式出现,并允许链接到网站根目次以外
Allowoverride None                                          # none不利用,htaccess控制,all允许
Require all granted                            # granted表示运行全部访问,denied表示拒绝全部访问
</Directory>                                         #容器竣事
DirectoryIndex index.html                    #定义主页文件,当访问到网站目次时假如有定义的主页文件,网站会自动访问
addDefaultCharset UTF-8                              #字符编码,假如有中文的话,有可能必要修改为gb2312或者gbk,因你的网站文件的默认编码而异
 1.4 启动Apache

systemctl start httpd  1.5 查看服务是否启动

假如没有启动成功,缘故原由是80端口被占用。
利用如下命令查看80端口:
lsof -i:80 https://img-blog.csdnimg.cn/643be2d3b3d14c3993e5ec37809e4309.png
【确保安装了lsof(yum -y install lsof)】
yum -y install lsof  https://img-blog.csdnimg.cn/79e8b19d90da459e97338bebe0de558b.png
启动成功,利用浏览器访问ip地点即会出现Testing 123..页面
https://img-blog.csdnimg.cn/771e37f75fc148a18fbf75417c1e2c0b.png
启动失败
https://img-blog.csdnimg.cn/af6486f0b5b54437ba1ff5ba91bcf9b8.png
 1.6 访问验证httpd服务

curl +ip地址 我们也可以利用文本浏览器,方便测试。
安装elinks文本浏览器
yum - y install elinks https://img-blog.csdnimg.cn/4b977807d02148f38615f7bca85bc520.png
访问(Ctrl+c退出)
elinks +ip地址 https://img-blog.csdnimg.cn/21085c1255244a1b9e277e2e0ab5a224.png

2 Apache设置实例

在网站根目次/var/www/html下面创建一个主页文件【切记,创建的后缀必须是html】
cd /var/www/html touch index.html  https://img-blog.csdnimg.cn/98f02da72b46418ab8a2090da7a96cb1.png
 2.1 实例一 

在 index.html 中添加内容
echo 'mortalz7' > /var/www/html/index.html 重新启动服务
systemctl restart httpd 接下来利用浏览器访问即可
https://img-blog.csdnimg.cn/a58eea5897674637baaf7ce95f6d7a28.png
 2.2 实例二

编辑 index.html 文件
vi /var/www/html/index.html 把主页文件写成html标签格式。
在index.html中添加如下内容:
<html>
    <head>
        <title>测试</title>
    </head>
<body>
    <h1 align="center">mortalz7</h1>
</body>
</html>  重新启动服务
systemctl restart httpd 浏览器访问
https://img-blog.csdnimg.cn/d5f2352f140544989d8cba054436d5e8.png
 2.3 实例三

修改家目次
创建www目次
mkdir /www 编辑主设置文件
vi /etc/httpd/conf/httpd.conf 显示行号
:set nu :119 DocumentRoot "/var/www/html" 修改为 DocumentRoot "/www"
修改前:
https://img-blog.csdnimg.cn/5269af7a8510494bbcab3533fae8ba38.png
修改后:
https://img-blog.csdnimg.cn/3f96328f278c4cbeba315c8222a03701.png
:131 <directory “var/www/html”>修改为<directory ”/www”>
修改前:
https://img-blog.csdnimg.cn/275e361d856b4882ad8e6889b83b1e08.png
修改后:
https://img-blog.csdnimg.cn/7962be8a1ae34c6a9a9a3c72cb6fdb4d.png
 重新启动服务
systemctl restart httpd 测试:
cd /www vi index.html 添加如下内容:
mortal 重新启动服务
systemctl restart httpd 浏览器访问
https://img-blog.csdnimg.cn/c8150fea962841a9aa71783f3953021d.png
 2.4 实例四

修改主页范例或者主页名
编辑主设置文件
vi /etc/httpd/conf/httpd.conf 显示行号 
:set nu :164 将index.html修改为indel.php
修改前:
https://img-blog.csdnimg.cn/f2c2e7167b1043aba8f5710a98577157.png
修改后:
https://img-blog.csdnimg.cn/a52ee63f738c4e3d91a5bc188eccece8.png
重新加载服务(重启服务也可以)
systemctl reload httpd 或者
systemctl restart httpd 添加内容
echo "mortalz7 php" > /www/index.php 浏览器访问即可
https://img-blog.csdnimg.cn/3c6e162c427c4c17b72720f763d31458.png
 2.5 Apache常用命令

   #/usr/local/apache2/bin/apachectl -M                    #查看常见的模块(包罗动态和静态)
#/usr/local/apache2/bin/apachectl -l                          #查看加载的静态模块
#/usr/local/apache2/bin/apachectl -t                            #检查设置文件有无语法错误
#/usr/local/apache2/bin/apachectl graceful                  #加载设置文件,但不重启
#/usr/local/apache2/bin/apachectl start/restart/stop          #启动/重启/制止Apache服务

3 Apache设置用户认证 

 3.1 预备环境

yum -y install gcc gcc-c++ make pcre pcre-devel gd-devel openssl-develzlib zlib-devel https://img-blog.csdnimg.cn/a8581452671444a181c884e9df161098.png
为了方便,先将/tmp目次下内容删掉。
cd /tmp rm -rf *  3.2 下载压缩包

先把wget下载好
yum -y install wget 下载压缩包
wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz https://img-blog.csdnimg.cn/cb61a62560e24e9abbbbebf69f414100.png
 3.3 解压压缩包

tar xf httpd-2.4.58.tar.gz https://img-blog.csdnimg.cn/efe4e51ecfc74ef8b94baa07ab9cd39e.png
 3.4 设置

cd httpd-2.4.58/ ./configure --prefix=/usr/local/apache2 https://img-blog.csdnimg.cn/ffc2284c41d04fdd946e2feb5e9d631c.png
【题目解决】 
发现出现configure: error: APR not found.  Please read the documentation.题目,我们利用下面命令解决。
yum -y install apr-* https://img-blog.csdnimg.cn/66ae52226b5b4c7385e289db55a2cf6b.png
解决完重新执行一遍设置即可。
 3.5 编译安装

make && make install https://img-blog.csdnimg.cn/865794323b7f491d9e8ad85211e88623.png
 3.6 检查设置文件有无语法错误

/usr/local/apache2/bin/apachectl -t 出现如图所示题目:
https://img-blog.csdnimg.cn/c5cbddeab2a14081bd4cbb0477e06430.png
【题目解决】 
 缘故原由:
ServerName有题目
解决方法:
编辑设置文件:
vi /usr/local/apache2/conf/httpd.conf 添加如下内容:
ServerName localhost:80 编辑完成后生存退出,重新执行指令,只显示Syntax OK即表示成功。
https://img-blog.csdnimg.cn/b34252b00da2499eaf01ebc0c7e8d0f2.png
 3.7 Apache设置用户认证

(用户认证的用途:当一个网站被访问的时候,必要输入用户名和密码才气进入,而不是直接登录网站,这种认证的情势可以针对网站的一个目次举行,也可以针对单个的访问文件举行)
  3.7.1 编辑文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 全部删除,写入如下内容:
<VirtualHost *:80>
    DocumentRoot "/www/abc"         

<Directory /www/abc>
    AllowOverride AuthConfig
    AuthName "mortalz7"                              
    AuthType Basic
    AuthUserFile /www/.htpasswd
    require valid-user
</Directory>

</VirtualHost>   AllowOverride AuthConfig                #允许对/www/abc 目次下的内容举行用户认证
/data/www/abc                                    #为将要访问的页面的目次
AuthName                                               #指定存放的用户
AuthUserFile /data/.htpasswd                  #指定存放用户名和密码的文件
  3.7.2 打开模块  

 编辑Apache的主设置文件
vi /usr/local/apache2/conf/httpd.conf 打开模块 
:/httpd-vhost 将Include conf/extra/httpd-vhosts.conf前面的#去掉
https://img-blog.csdnimg.cn/1bb17d6038d14a22b27beab5035eecca.png
  3.7.3 htpasswd天生密码文件  

指定用户为mortalz7,本身设定一个密码,并重新输入一下,出现Adding password for user mortalz7即表示成功。
htpasswd -c /www/.htpasswd mortalz7 https://img-blog.csdnimg.cn/26ab2fcebe914bdfa4660383345c5c08.png
查看,显示用户mortalz7,表示用户设置完成。 
cat /www/.htpasswd https://img-blog.csdnimg.cn/087472de83be4177bf976ba1d1be3fa3.png
 3.8 加载设置并启动

/usr/local/apache2/bin/apachectl graceful /usr/local/apache2/bin/apachectl start 【题目解决】
 一、题目:
   httpd not running, trying to start
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
https://img-blog.csdnimg.cn/553534ad52a541c09dd2c1c3c377e932.png
https://img-blog.csdnimg.cn/9208f529ad324a308f860f3a8ab9017e.png
二、缘故原由: 
httpd服务启动,占用80端口
三、解决方法:
先下载好psmisc
yum install psmisc 杀死httpd
killall -9 httpd 重新执行下面俩命令即可
/usr/local/apache2/bin/apachectl graceful
/usr/local/apache2/bin/apachectl start https://img-blog.csdnimg.cn/eab4e0e9929646f6955a79efdbf8d656.png
 3.9 测试 

浏览器访问 ip地点+/www/abc
192.168.10.118/www/abc 出现输入用户名和密码页面即表示成功。
https://img-blog.csdnimg.cn/a6aba9d30efc473f93978b29dbd1fcb7.png


4  Apache设置默认虚拟主机

 4.1 编辑主设置文件

vi /usr/local/apache2/conf/httpd.conf :207 Require all denied 修改为 Require all granted
修改前:
https://img-blog.csdnimg.cn/f1285811bf544e24ac6dc78d83f548c5.png
修改后:
https://img-blog.csdnimg.cn/31346153fe5e460ca0660ddfbea27a07.png
 4.2 开启模块

:/httpd-vhost 将Include conf/extra/httpd-vhost.conf前面的#去掉
 4.3 编辑文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 全部删除,写入如下内容:
<VirtualHost *:80>
    DocumentRoot "/tmp/111"      
    ServerName 111.com   
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/www"      
    ServerName www.test.com
    ServerAlias www.aaa.com   
</VirtualHost> 除了已作过设置的域名(aaa、test)外,别的访问的域名均跳转到/tmp/111下。
 4.4 测试

  4.4.1 预备

为了方便测试,我们先往index.html 文件中添加点内容。
cd /tmp mkdir 111 cd 111/ vi index.html 写入如下内容:
mortalz7,hello i am www.111.com cd /data/www vi index.html  写入如下内容:
mortalz7,hello i am www.aaa.com and www.test.com   4.4.2 添加当地剖析

vi /etc/hosts 添加如下内容:
192.168.10.118 www.111.com
192.168.10.118 www.aaa.com
192.168.10.118 www.test.com https://img-blog.csdnimg.cn/df5ec00cb00941bea7d8018796504b4d.png
  4.4.3 启动服务 

/usr/local/apache2/bin/apachectl start 假如显示
   httpd(pid XXXX) already running
解决方法:
killall httpd 再重新启动即可
  4.4.4 测试(Ctrl+c停止进程)

ping www.111.com https://img-blog.csdnimg.cn/0604497d9b7a42c08d0c430ef5376798.png
ping www.aaa.com https://img-blog.csdnimg.cn/75c8ab7b964f49439da942e5405fa3e2.png
ping www.test.com https://img-blog.csdnimg.cn/11e5d9601ebf4f49acb55db16486cfb4.png
curl -x +ip地址:80 www.aaa.com
curl -x +ip地址:80 www.test.com
curl -x +ip地址:80 www.111.com 【切记加上端标语】
   没有加:80会显示
curl: (7) Failed connect to 192.168.10.118:80; 拒绝连接/Connection refused
https://img-blog.csdnimg.cn/df17e62574bc4c429f90c2c493ef70eb.png 

5 Apache设置rewrite规则

Apache中rewrite规则代码均写在<IfModule mod_rewrite.c>模块下(前提要在Apache主设置文件中前面#去掉,开启模块才气利用)
web服务可能会用到多个域名,域名有主有次,输入次域名会主动跳转到主域名举行访问。设定为301永世跳转,302是临时跳转。
 5.1 预备

创建好/data/www(创建过不消举行此操作) 
mkdir -p /data/www cd /data/www vi index.html 写入如下内容:
mortalz7,hello,this is test rewrite  5.2 开启模块 

vi /usr/local/apache2/conf/httpd.conf :/rewrite :156 将LoadModule rewrite_module modules/mod_rewrite.so前面#去掉
https://img-blog.csdnimg.cn/addcb82de93c4f1795d48257ee0fac96.png
:481 :/httpd-vhosts    将Include conf/extra/httpd-vhost.conf前面的#去掉 
https://img-blog.csdnimg.cn/b293ac4db57546e0ae01e85ae793c953.png
 5.3 编辑文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
<IfModule mod_write.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.aaa.com$
    RewriteCond %{HTTP_HOST} ^www.bbb.com$
    RewriteRule ^/(.*)$ http://www.test.com/$1
</IfModule>
</VirtualHost>   调用rewrite模块:
RewriteEngine on                 #打开rewrite功能
RewriteCond                         #跳转条件
RewriteRule                         #跳转规则    
 5.4 检查设置文件有无语法错误

/usr/local/apache2/bin/apachectl -t        https://img-blog.csdnimg.cn/66235baaa8b144d5b0fd8536c6ceaf8d.png
 5.5 添加当地剖析

vi /etc/hosts 添加如下内容:
192.168.10.118 www.aaa.com
192.168.10.118 www.bbb.com
192.168.10.118 www.test.com https://img-blog.csdnimg.cn/b3f520fe649648ef84315af34726295b.png
 5.6 重新加载下设置文件

/usr/local/apache2/bin/apachectl restart  5.7 测试

curl www.aaa.com https://img-blog.csdnimg.cn/b75f72a3bc2a451294c5dd494ce29480.png
curl www.bbb.com https://img-blog.csdnimg.cn/ba1c9d27dbea4b658e237649cc5f1add.png
curl www.test.com https://img-blog.csdnimg.cn/1ae249733c3c4f8bbfbadb5875262ef7.png

 5.8 克制指定user_agent

照旧提前把模块开启【刚才做过,这次不再做,没做过请参考:】
修改文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
<IfModule mod_write.c>
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^.*curl.*    
    RewriteCond %{HTTP_USER_AGENT} ^.*chrome.*    
    RewriteRule .* -             
</IfModule>
</VirtualHost> 先不重新启动设置测试
curl www.test.com  重新启动设置测试
/usr/local/apache2/bin/apachectl restart curl www.test.com 访问不成功,报403错误了。
 5.9 通过rewrite限定某个目次

【相同做法,自行设置并测试】
<VirtualHost *:80>
    DocumentRoot "/data/www"
<IfModule mod_write.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URL} ^.*/tmp/.*
    RewriteRule .* -             
</IfModule>
</VirtualHost>   RewriteCond %{REQUEST_URL} ^.*/tmp/.*  #克制访问tmp目次
RewriteRule .* -            #克制
 5.10 rewrite变量 

   %{HTTP_USER_AGENT}         #表示访问的user_agent
%{HTTP_HOST}                  #表示当前访问的网址,只是指前缀部分,格式是www.xxx.com不包罗”http://”和”/”
%{REQUEST_URL}                 #表示访问的相对根目次地点,就是域名/背面的成分,格式包罗最前面的”/”
举例:
www.123.com/xiang/1.html          #www.123.com表示HOST   xiang/1.html表示URL

6  Apache设置日志切割与管理

web服务器出现大量的访问日志和错误日志,我们要对日志举行切割,方便管理人员的查询,一些不紧张的记载,也可以规定日志中不显示这些。
虚拟主机设置文件日志路径:/usr/local/apache2/logs
https://img-blog.csdnimg.cn/c7a7c434c67d40d2bc83b5c5bb8a1a20.png
 6.1 Apache主设置文件日志相关格式规定

vi /usr/local/apache2/conf/httpd.conf :/log_config https://img-blog.csdnimg.cn/223df08f25794f049e238ab05db1df45.png
【默认开启的】
:/LogFormat   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
https://img-blog.csdnimg.cn/bf680996a14043bc9825a1510c62fe90.png
 
   %h  #泉源ip
%u  #访问的user
%t   #时间
%r   #动作
 6.2  日志切割

  6.2.1 预备

创建好/data/www(创建过不消举行此操作)
mkdir -p /data/www cd /data/www vi index.html  写入如下内容:
mortalz7,hello,this is test log   6.2.2 修改文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access%y%m%d_log 86400" combined
</VirtualHost> %y%m%d规定年代日,86400秒即一天,一天切割一次。
  6.2.3 重启设置

/usr/local/apache2/bin/apachectl restart   6.2.4 修改时间

date查看时间
date https://img-blog.csdnimg.cn/e3057d0fe35045318d7118f97e93d7db.png
修改时间
date +月日时分 我将时间修改成一天后,为了简朴,我直接修改为10月30号
 https://img-blog.csdnimg.cn/1ee88804e0fc44c4baae7dfa8fa04e18.png
  6.2.5 测试

curl +ip地址 https://img-blog.csdnimg.cn/e665031a316741278996cce2ce9a1a05.png
cd /usr/local/apache2/logs/ https://img-blog.csdnimg.cn/f6d5ca2df067472db13cbe003396fc76.png
多出 test.com-access231030_log,日志切割成功!
 6.3 不记载订定文件范例的日志

【更刚才一样,设置文件重新编辑即可。】
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
    ErrorLog "logs/test.com-error_log"
    SetEnvif Request_URL ".*\.gif$" image-request
    SetEnvif Request_URL ".*\.png$" image-request
    SetEnvif Request_URL ".*\.bmp$" image-request
    SetEnvif Request_URL ".*\.swf$" image-request
    SetEnvif Request_URL ".*\.js$" image-request
    SetEnvif Request_URL ".*\.css$" image-request
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access%y%m%d_log 86400" combined env=!image-request
</VirtualHost>
7 设置静态缓存

对于网站上一些静态资源(图片、html、css等),通过客户端缓存,淘汰哀求,加快页面的加载速率,网站加载速率快了,用户体验感就会越好,必要提前确认是否支持 mod_expires.c模块。
 7.1 开启模块

vi /usr/local/apache2/conf/httpd.conf 搜索expires
:/expires 将LoadModule expires_module modules/mod_expires.so前的#去掉
https://img-blog.csdnimg.cn/15746f66d74b469a8aec1f46556e471d.png
:/httpd-vhosts    将Include conf/extra/httpd-vhost.conf前面的#去掉【前面开启请忽略】
https://img-blog.csdnimg.cn/b91c938391ef4d7f9ba21cb7f81a667b.png
 7.2 编辑文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresBytype image/gif "access plus 1 days"
    ExpiresBytype image/jpeg "access plus 24 hours"
    ExpiresBytype image/png "access plus 24 hours"
    ExpiresBytype text/css "now plus 2 hours"
    ExpiresBytype application/x-javascript "now plus 2 hours"
    ExpiresBytype application/x-shockwave-flash "now plus 2 hours"
    ExpiresDeFault "now plus 0 min"
</IfModule>
</VirtualHost>  7.3 测试

cd /data/www yum -y install lrzsz rz命令上传个图片
rz 授权
chmod 777 lab.jpg 重启设置
/usr/local/apache2/bin/apachectl restart 【假如显示httpd not running, trying to start则利用/usr/local/apache2/bin/apachectl start启动即可。】
https://img-blog.csdnimg.cn/e6275b9ef1564c268c3260a1e2ef978e.png
关闭防火墙和selinux【之前关掉请忽略此步调】
systemctl stop firewalld
setenforce 0  https://img-blog.csdnimg.cn/851aa3e383ec4f3a801ebbde75acbe5f.png
 网址输入:IP地点/图片名称访问
我的IP地点是192.168.10.119,上传的图片名称是lab.jpg
192.168.10.119/lab.jpg https://img-blog.csdnimg.cn/2aa3e3af26484ae38e0d8c02bc4fb3fb.png
curl -x 192.168.10.119:80 'http://www.test.com/lab.jpg' -I https://img-blog.csdnimg.cn/f77f96fae0da4cf7836e6b0570cf193a.png
显示200 OK ,成功!


8  Apache设置防盗链

盗链:在本身的页面上展示一些并不在本身服务器上的一些内容,通过一些技术手段获得别人服务器上的一些资源,绕过别人的资源展示页面,在本身的页面上向用户提供内容。
   预备:    两台虚拟机
IP地点:第一台虚拟机 192.168.10.119
              第二台虚拟机 192.168.10.110
 8.1 预备

第一台虚拟机: 
编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
</VirtualHost> 第二台虚拟机:
安装服务
yum -y install httpd cd /var/www/html vi index.html 写入如下内容:
<html>
    <title>test</title>
<body>
    <h1>mortalz7</h1>
    <img src="http://www.test.com/lab.jpg">
</body>
</html> 添加当地剖析
vi /etc/hosts 添加如下内容:(IP地点是第一台呆板的)
192.168.10.119 www.test.com https://img-blog.csdnimg.cn/d7d6cdd3dfde4116adc2694d79a584d7.png
关闭防火墙和selinux
systemctl stop firewalld
setenforce 0 重启Apache服务
systemctl restart httpd 测试:
浏览器输入第二台主机IP地点访问即可。

 8.2 设置防盗链

第一台虚拟机:
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
    SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref
<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">
    Order Allow,Deny
    Allow from env=local_ref
</filesmatch>
</VirtualHost>   SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref         #给网站做标注
<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">          #规定文件范例
Allow from env=local_ref                                                         #允许local_ref引用
重新加载下设置文件
/usr/local/apache2/bin/apachectl graceful 重启设置
/usr/local/apache2/bin/apachectl restart 测试:
浏览器输入第二台主机IP地点访问
192.168.10.110 https://img-blog.csdnimg.cn/759243fe8f8849fc91ebe326f2feddc7.png
图片显示不出来,实行成功!

9 Apache访问控制

作用:控制对网站资源的访问,还可以对特定的网站目次添加访问权限。
   预备:两台虚拟机
IP地点:第一台虚拟机 192.168.10.119
              第二台虚拟机 192.168.10.110
克制IP地点/网段举行访问 
第一台虚拟机: 
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 清空,添加如下内容:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
<Directory "/data/www">
    AllowOverride None
    options None
    order allow,deny
    Allow from all
    deny from 192.168.10.0/24
</Directory>
</VirtualHost>   order allow,deny                          #先允许后拒绝
Allow from all                                   #允许全部人访问
deny from <ip地点>                         #克制此IP地点访问
deny from 192.168.10.0/24           #克制此网段(192.168.10.0/24)的IP地点访问
 重新加载下设置文件
/usr/local/apache2/bin/apachectl graceful 重启设置
/usr/local/apache2/bin/apachectl restart https://img-blog.csdnimg.cn/95b006d6915348eaa5fb8341c443fbeb.png
测试:
第二台虚拟机:
curl -I <第一台虚拟机的IP地点>
curl -I 192.168.10.119 https://img-blog.csdnimg.cn/9b52b554d8a74511aa8f57999d9faf0e.png
出现403 Forbidden访问错误,实行成功!

创作不易,给个三连吧~
https://img-blog.csdnimg.cn/0bb3f038617b4748a2a82ae1f4d6547e.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Apache服务的搭建与设置(超详细版)