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

瑞星  金牌会员 | 2024-6-23 19:28:28 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 646|帖子 646|积分 1938

前言 
           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)关闭防火墙
  1. systemctl stop firewalld
复制代码
【永世关闭防火墙 systemctl disable firewalld】
  1. systemctl disable firewalld
复制代码

(2)关闭SELinux
修改设置文件
  1. vi /etc/selinux/config
复制代码
 #将SELINUX=enforcing修改为SELINUX=disabled。

  1. setenforce 0
复制代码
 【永世关闭SELinux,重启生效,利用reboot命令】
  1. reboot
复制代码
 1.2 安装Apache

  1. yum -y install httpd
复制代码

   安装成功后,会产生下面两个文件:
  #主设置文件              /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

  1. systemctl start httpd
复制代码
 1.5 查看服务是否启动

假如没有启动成功,缘故原由是80端口被占用。
利用如下命令查看80端口:
  1. lsof -i:80
复制代码

【确保安装了lsof(yum -y install lsof)】
  1. yum -y install lsof
复制代码
 

启动成功,利用浏览器访问ip地点即会出现Testing 123..页面

启动失败

 1.6 访问验证httpd服务

  1. curl +ip地址
复制代码
我们也可以利用文本浏览器,方便测试。
安装elinks文本浏览器
  1. yum - y install elinks
复制代码

访问(Ctrl+c退出)
  1. elinks +ip地址
复制代码


2 Apache设置实例

在网站根目次/var/www/html下面创建一个主页文件【切记,创建的后缀必须是html】
  1. cd /var/www/html
复制代码
  1. touch index.html
复制代码
 

 2.1 实例一 

index.html 中添加内容
  1. echo 'mortalz7' > /var/www/html/index.html
复制代码
重新启动服务
  1. systemctl restart httpd
复制代码
接下来利用浏览器访问即可

 2.2 实例二

编辑 index.html 文件
  1. vi /var/www/html/index.html
复制代码
把主页文件写成html标签格式。
在index.html中添加如下内容:
  1. <html>
  2.     <head>
  3.         <title>测试</title>
  4.     </head>
  5. <body>
  6.     <h1 align="center">mortalz7</h1>
  7. </body>
  8. </html>
复制代码
 重新启动服务
  1. systemctl restart httpd
复制代码
浏览器访问

 2.3 实例三

修改家目次
创建www目次
  1. mkdir /www
复制代码
编辑主设置文件
  1. vi /etc/httpd/conf/httpd.conf
复制代码
显示行号
  1. :set nu
复制代码
  1. :119
复制代码
DocumentRoot "/var/www/html" 修改为 DocumentRoot "/www"
修改前:

修改后:

  1. :131
复制代码
<directory “var/www/html”>修改为<directory ”/www”>
修改前:

修改后:

 重新启动服务
  1. systemctl restart httpd
复制代码
测试:
  1. cd /www
复制代码
  1. vi index.html
复制代码
添加如下内容:
  1. mortal
复制代码
重新启动服务
  1. systemctl restart httpd
复制代码
浏览器访问

 2.4 实例四

修改主页范例或者主页名
编辑主设置文件
  1. vi /etc/httpd/conf/httpd.conf
复制代码
显示行号 
  1. :set nu
复制代码
  1. :164
复制代码
将index.html修改为indel.php
修改前:

修改后:

重新加载服务(重启服务也可以)
  1. systemctl reload httpd
复制代码
或者
  1. systemctl restart httpd
复制代码
添加内容
  1. echo "mortalz7 php" > /www/index.php
复制代码
浏览器访问即可

 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 预备环境

  1. yum -y install gcc gcc-c++ make pcre pcre-devel gd-devel openssl-devel  zlib zlib-devel
复制代码

为了方便,先将/tmp目次下内容删掉。
  1. cd /tmp
复制代码
  1. rm -rf *
复制代码
 3.2 下载压缩包

先把wget下载好
  1. yum -y install wget
复制代码
下载压缩包
  1. wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz
复制代码

 3.3 解压压缩包

  1. tar xf httpd-2.4.58.tar.gz
复制代码

 3.4 设置

  1. cd httpd-2.4.58/
复制代码
  1. ./configure --prefix=/usr/local/apache2
复制代码

【题目解决】 
发现出现configure: error: APR not found.  Please read the documentation.题目,我们利用下面命令解决。
  1. yum -y install apr-*
复制代码

解决完重新执行一遍设置即可。
 3.5 编译安装

  1. make && make install
复制代码

 3.6 检查设置文件有无语法错误

  1. /usr/local/apache2/bin/apachectl -t
复制代码
出现如图所示题目:

【题目解决】 
 缘故原由:
ServerName有题目
解决方法:
编辑设置文件:
  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
添加如下内容:
  1. ServerName localhost:80
复制代码
编辑完成后生存退出,重新执行指令,只显示Syntax OK即表示成功。

 3.7 Apache设置用户认证

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

  1. vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码
全部删除,写入如下内容:
  1. <VirtualHost *:80>
  2.     DocumentRoot "/www/abc"         
  3. <Directory /www/abc>
  4.     AllowOverride AuthConfig
  5.     AuthName "mortalz7"                              
  6.     AuthType Basic
  7.     AuthUserFile /www/.htpasswd
  8.     require valid-user
  9. </Directory>
  10. </VirtualHost>
复制代码
  AllowOverride AuthConfig                #允许对/www/abc 目次下的内容举行用户认证
  /data/www/abc                                    #为将要访问的页面的目次
  AuthName                                               #指定存放的用户
  AuthUserFile /data/.htpasswd                  #指定存放用户名和密码的文件
    3.7.2 打开模块  

 编辑Apache的主设置文件
  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
打开模块 
  1. :/httpd-vhost
复制代码
将Include conf/extra/httpd-vhosts.conf前面的#去掉

  3.7.3 htpasswd天生密码文件  

指定用户为mortalz7,本身设定一个密码,并重新输入一下,出现Adding password for user mortalz7即表示成功。
  1. htpasswd -c /www/.htpasswd mortalz7
复制代码

查看,显示用户mortalz7,表示用户设置完成。 
  1. cat /www/.htpasswd
复制代码

 3.8 加载设置并启动

  1. /usr/local/apache2/bin/apachectl graceful
复制代码
  1. /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
  


二、缘故原由: 
httpd服务启动,占用80端口
三、解决方法:
先下载好psmisc
  1. yum install psmisc
复制代码
杀死httpd
  1. killall -9 httpd
复制代码
重新执行下面俩命令即可
  1. /usr/local/apache2/bin/apachectl graceful
  2. /usr/local/apache2/bin/apachectl start
复制代码

 3.9 测试 

浏览器访问 ip地点+/www/abc
  1. 192.168.10.118/www/abc
复制代码
出现输入用户名和密码页面即表示成功。



4  Apache设置默认虚拟主机

 4.1 编辑主设置文件

  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
  1. :207
复制代码
Require all denied 修改为 Require all granted
修改前:

修改后:

 4.2 开启模块

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

  1. vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码
全部删除,写入如下内容:
  1. <VirtualHost *:80>
  2.     DocumentRoot "/tmp/111"      
  3.     ServerName 111.com     
  4. </VirtualHost>
  5. <VirtualHost *:80>
  6.     DocumentRoot "/data/www"      
  7.     ServerName www.test.com
  8.     ServerAlias www.aaa.com   
  9. </VirtualHost>
复制代码
除了已作过设置的域名(aaa、test)外,别的访问的域名均跳转到/tmp/111下。
 4.4 测试

  4.4.1 预备

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

  1. vi /etc/hosts
复制代码
添加如下内容:
  1. 192.168.10.118 www.111.com
  2. 192.168.10.118 www.aaa.com
  3. 192.168.10.118 www.test.com
复制代码

  4.4.3 启动服务 

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

  1. ping www.111.com
复制代码

  1. ping www.aaa.com
复制代码

  1. ping www.test.com
复制代码

  1. curl -x +ip地址:80 www.aaa.com
  2. curl -x +ip地址:80 www.test.com
  3. curl -x +ip地址:80 www.111.com
复制代码
【切记加上端标语】
   没有加:80会显示
  curl: (7) Failed connect to 192.168.10.118:80; 拒绝连接/Connection refused
  
 

5 Apache设置rewrite规则

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

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

  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
  1. :/rewrite
复制代码
  1. :156
复制代码
将LoadModule rewrite_module modules/mod_rewrite.so前面#去掉

  1. :481
复制代码
  1. :/httpd-vhosts   
复制代码
将Include conf/extra/httpd-vhost.conf前面的#去掉 

 5.3 编辑文件

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

  1. /usr/local/apache2/bin/apachectl -t       
复制代码

 5.5 添加当地剖析

  1. vi /etc/hosts
复制代码
添加如下内容:
  1. 192.168.10.118 www.aaa.com
  2. 192.168.10.118 www.bbb.com
  3. 192.168.10.118 www.test.com
复制代码

 5.6 重新加载下设置文件

  1. /usr/local/apache2/bin/apachectl restart
复制代码
 5.7 测试

  1. curl www.aaa.com
复制代码

  1. curl www.bbb.com
复制代码

  1. curl www.test.com
复制代码


 5.8 克制指定user_agent

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

【相同做法,自行设置并测试】
  1. <VirtualHost *:80>
  2.     DocumentRoot "/data/www"
  3. <IfModule mod_write.c>
  4.     RewriteEngine on
  5.     RewriteCond %{REQUEST_URL} ^.*/tmp/.* [NC]
  6.     RewriteRule .* - [F]            
  7. </IfModule>
  8. </VirtualHost>
复制代码
  RewriteCond %{REQUEST_URL} ^.*/tmp/.* [NC]  #克制访问tmp目次
  RewriteRule .* - [F]            #克制
   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

 6.1 Apache主设置文件日志相关格式规定

  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
  1. :/log_config
复制代码

【默认开启的】
  1. :/LogFormat
复制代码
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  

 
   %h  #泉源ip
  %u  #访问的user
  %t   #时间
  %r   #动作
   6.2  日志切割

  6.2.1 预备

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

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

  1. /usr/local/apache2/bin/apachectl restart
复制代码
  6.2.4 修改时间

date查看时间
  1. date
复制代码

修改时间
  1. date +月日时分
复制代码
我将时间修改成一天后,为了简朴,我直接修改为10月30号
 

  6.2.5 测试

  1. curl +ip地址
复制代码

  1. cd /usr/local/apache2/logs/
复制代码

多出 test.com-access231030_log,日志切割成功!
 6.3 不记载订定文件范例的日志

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

7 设置静态缓存

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

  1. vi /usr/local/apache2/conf/httpd.conf
复制代码
搜索expires
  1. :/expires
复制代码
将LoadModule expires_module modules/mod_expires.so前的#去掉

  1. :/httpd-vhosts   
复制代码
将Include conf/extra/httpd-vhost.conf前面的#去掉【前面开启请忽略】

 7.2 编辑文件

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

  1. cd /data/www
复制代码
  1. yum -y install lrzsz
复制代码
rz命令上传个图片
  1. rz
复制代码
授权
  1. chmod 777 lab.jpg
复制代码
重启设置
  1. /usr/local/apache2/bin/apachectl restart
复制代码
【假如显示httpd not running, trying to start则利用/usr/local/apache2/bin/apachectl start启动即可。】

关闭防火墙和selinux【之前关掉请忽略此步调】
  1. systemctl stop firewalld
  2. setenforce 0
复制代码
 

 网址输入:IP地点/图片名称访问
我的IP地点是192.168.10.119,上传的图片名称是lab.jpg
  1. 192.168.10.119/lab.jpg
复制代码

  1. curl -x 192.168.10.119:80 'http://www.test.com/lab.jpg' -I
复制代码

显示200 OK ,成功!


8  Apache设置防盗链

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

第一台虚拟机: 
编辑文件
  1. vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码
清空,添加如下内容:
  1. <VirtualHost *:80>
  2.     DocumentRoot "/data/www"
  3.     ServerName www.test.com
  4. </VirtualHost>
复制代码
第二台虚拟机:
安装服务
  1. yum -y install httpd
复制代码
  1. cd /var/www/html
复制代码
  1. vi index.html
复制代码
写入如下内容:
  1. <html>
  2.     <title>test</title>
  3. <body>
  4.     <h1>mortalz7</h1>
  5.     <img src="http://www.test.com/lab.jpg">
  6. </body>
  7. </html>
复制代码
添加当地剖析
  1. vi /etc/hosts
复制代码
添加如下内容:(IP地点是第一台呆板的)
  1. 192.168.10.119 www.test.com
复制代码

关闭防火墙和selinux
  1. systemctl stop firewalld
  2. setenforce 0
复制代码
重启Apache服务
  1. systemctl restart httpd
复制代码
测试:
浏览器输入第二台主机IP地点访问即可。

 8.2 设置防盗链

第一台虚拟机:
  1. vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码
清空,添加如下内容:
  1. <VirtualHost *:80>
  2.     DocumentRoot "/data/www"
  3.     ServerName www.test.com
  4.     SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref
  5. <filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">
  6.     Order Allow,Deny
  7.     Allow from env=local_ref
  8. </filesmatch>
  9. </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引用
  重新加载下设置文件
  1. /usr/local/apache2/bin/apachectl graceful
复制代码
重启设置
  1. /usr/local/apache2/bin/apachectl restart
复制代码
测试:
浏览器输入第二台主机IP地点访问
  1. 192.168.10.110
复制代码

图片显示不出来,实行成功!

9 Apache访问控制

作用:控制对网站资源的访问,还可以对特定的网站目次添加访问权限。
   预备:两台虚拟机
  IP地点:第一台虚拟机 192.168.10.119
                第二台虚拟机 192.168.10.110
  克制IP地点/网段举行访问 
第一台虚拟机: 
  1. vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
复制代码
清空,添加如下内容:
  1. <VirtualHost *:80>
  2.     DocumentRoot "/data/www"
  3.     ServerName www.test.com
  4. <Directory "/data/www">
  5.     AllowOverride None
  6.     options None
  7.     order allow,deny
  8.     Allow from all
  9.     deny from 192.168.10.0/24
  10. </Directory>
  11. </VirtualHost>
复制代码
  order allow,deny                          #先允许后拒绝
  Allow from all                                   #允许全部人访问
  deny from <ip地点>                         #克制此IP地点访问
  deny from 192.168.10.0/24           #克制此网段(192.168.10.0/24)的IP地点访问
   重新加载下设置文件
  1. /usr/local/apache2/bin/apachectl graceful
复制代码
重启设置
  1. /usr/local/apache2/bin/apachectl restart
复制代码

测试:
第二台虚拟机:
curl -I <第一台虚拟机的IP地点>
  1. curl -I 192.168.10.119
复制代码

出现403 Forbidden访问错误,实行成功!

创作不易,给个三连吧~


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表