Apache

一、概念

HTML:超文本标记语言

HTTP:超文本传输协议

URL:统一资源定位符

动态页面:需要连接数据库的页面,不是放视频能动的页面。

进程和线程:做个简单的比喻:进程=火车,线程=车厢    链接:https://www.zhihu.com/question/25532384/answer/411179772

  • 线程在进程下行进(单纯的车厢无法运行)
  • 一个进程可以包含多个线程(一辆火车可以有多个车厢)
  • 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
  • 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
  • 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
  • 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
  • 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
  • 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-"互斥锁"
  • 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”

二、Apache详解

1.概述

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的web服务器端以件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python/php等解释器编译到服务器中。Apache有多种产品,可以支持SSL技术,支持多个盡拟主机。Apache是以进程为基础的结构,进程要比线程消耗史多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点,而不是增加处理器。到目前为止Apache旧仍然是世界上用的最多的Web服务器,市场占有率达60%左右。

Apache

 

2.工作模式

(1)prefork:apache启动时fork一些进程(较多),每个进程只有1个线程,线程很安全,但是资源占用高,不适合高并发请求。

(2)worker:apache启动时fork一些进程(较少),每个进程有多个线程,线程不足够安全,资源占用相对少,高并发场景比prefork更优秀一些。

(3)event:类似worker模式,但是可以keep-alive,每个进程的所有线程中有1个专门的管理线程,可以很好地平衡keep-alive和高并发请求(关键在于设置keep-alive的timeout参数)。

[root@localhost lamp]# httpd -V | grep -i "server mpm"
bash: httpd: command not found...
[root@localhost lamp]# ln -s /usr/local/apache2/bin/* /usr/local/bin/
[root@localhost lamp]# httpd -V | grep -i "server mpm"
Server MPM:     worker

在编译时 --with-mpm=xxx 可以指定工作模式

3.文件位置

  配置文件

    源码包安装

      PREFIX/etc/httpd.conf

      PREFIX/etx/extra/*.conf

    rpm包安装

      /etc/httpd/conf/httpd.conf

  网页文件

    源码包安装

      PREFIX/htdocs/

    rpm包安装

      /var/www/html/

  日志文件

    源码包安装   

      PREFIX/logs

    rpm包安装

      /var/log/httpd

4.配置文件详解 

Apache配置文件注意区分字母大小写

4.1针对主机环境的基本配置参数

ServerRoot  /usr/local/apache2    #apache的主目录
Listen          :80             #监听端口(0.0.0.0:80加上)
LoadModule  php7             #加载的相关模块
User
Group                 #用户和组
ServerAdmin              #管理员邮箱
ServerName                 #服务器名(没有域名解析时,使用临时解析。默认不开启)
ErrorLog "logs/error_log"           #服务器错误日志
CustomLog "logs/access_log" conmon  #访问记录日志
DirectoryIndex index.htmlindex.php       #默认网页文件名,优先级顺序
lnclude etc/extra/httpd-vhosts.conf         #子配置文件中内容也会加载生效

4.2主页目录及权限

DocumentRoot "/usr/local/apache2/htdocs”     #网页文件存放目录(默认)

<Directory /usr/local/apache2/htdocs">     #定义指定目录的权限过

  Options lndexes FollowSymLinks

    None  #没有任何额外权限
       AII      #所有权限(除去MultiViews以外)
    lndexes   #浏览权限(当此目录下没有默认网页文件时,显示目录内容〕
    FollowSymLinks  #准许软连接到其他目录,
    MultiViews     #准许文件名泛匹配〔需要手动开启模块才有效negotiation)
  AllowOverride None       #定义是否允许目录下.htaccess文件中的权限生效

    None      #.htaccess权限不生效
    AII       #文件中所有权限都生效
    AuthConfig    #文件中,只有网页认证的权限生效
  Require alI granted(denied)  #访问控制列表
</Directory>
<IfModule dir_module>  #此标签用来指定访问到指定目录时自动加载哪个页面文件.

  Directory  lndex index.php index.html  #可以写多个,但是有优先级之分
</IfMOdule>

 

三、Apache实验

 实验环境:搭建好的LAMP环境

 3.1Apache目录别名

[root@localhost lamp]# vim /usr/local/apache2/etc/httpd.conf            #开启子配置文件
Include etc/extra/httpd-autoindex.conf
[root@localhost lamp]# vim /usr/local/apache2/etc/extra/httpd-autoindex.conf   #修改自配置文件
Alias /test/ "/tmp/apache/test/"                             #别名目录在末尾不能缺少/

<Directory "/tmp/apache/test/">
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
</Directory>
[root@localhost lamp]# mkdir -p /tmp/apache/test                    #创建别名目录
[root@localhost lamp]# vim /tmp/apache/test/a.html                   #创建网页测试html文件
[root@localhost lamp]# /usr/local/apache2/bin/apachectl restart            #重启Apache服务

 

 3.2Apache用户认证

[root@localhost lamp]# mkdir /usr/local/apache2/htdocs/admin        #创建网页主目录,所有需要认证的网页放进去
[root@localhost lamp]# vim /usr/local/apache2/htdocs/admin/index.html   #创建网页
 
ApacheApache
[root@localhost lamp]# vim /usr/local/apache2/etc/httpd.conf        #修改主配置文件

 <Directory "/usr/local/apache2/htdocs/admin/">
   Options Indexes FollowSymLinks
   AllowOverride All                                #隐藏文件.htaccess中的所有权限都生效
   Require all granted
 </Directory>

[root@localhost lamp]# vim /usr/local/apache2/htdocs/admin/.htaccess   #创建隐藏文件.htaccess在主目录下
AuthName "welcome to us"
AuthType basic
AuthUserFile /usr/local/apache2/htdocs/admin/apache.passwd         #指明认证文件apache.passwd
require valid-user

[root@localhost lamp]# vim /usr/local/apache2/htdocs/admin/.htaccess   #创建认证文件apache.passwd在主目录下
[root@localhost lamp]# /usr/local/apache2/bin/htpasswd -c  /usr/local/apache2/htdocs/admin/apache.passwd test1  #htpasswd命令,第一个认证文件用-c指定
New password: 123456
Re-type new password: 
Adding password for user test1
[root@localhost lamp]# /usr/local/apache2/bin/htpasswd -m  /usr/local/apache2/htdocs/admin/apache.passwd test2  #非第一个认证文件用-m指定
New password: 654321
Re-type new password: 
Adding password for user test2

[root@localhost lamp]# /usr/local/apache2/bin/apachectl -t         #检测Apache配置文件是否有误
Syntax OK
[root@localhost lamp]# /usr/local/apache2/bin/apachectl stop       
[root@localhost lamp]# /usr/local/apache2/bin/apachectl start

ApacheApache

 

3.3虚拟主机

  (1)虚拟机:虚拟硬件,有独立操作系统。

  (2)虚拟主机:网站空间,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。(一个虚拟主机就相当于一个网站)

虐拟主机的分类:
  (1)基于IP的虚拟主机:一台服务器,多个ip,搭建多个网站
  (2)基于端口的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网绍使用不同端口访问
  (3)基于域名的虚拟主机:一台服务器,一个ip,搭建多个网站.每个网站使用不同域名访问

1.域名解析:准备两个域名,也可以搭建DNS服务器

[root@localhost user1]# vim /etc/hosts      #准备两个域名,域名解析用
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.150      www.sohu.com
10.0.0.150      www.sina.com

2.网站目录规划:在PREFIX/htdocs/网页文件的目录下,创建网站各自的家目录,并新建各自的index.html文件。

[root@localhost user1]# mkdir /usr/local/apache2/htdocs/sina  #在/htdocs/目录下分别创建sina和sohu两个子目录
[root@localhost user1]# mkdir /usr/local/apache2/htdocs/souhu
[root@localhost user1]# vim /usr/local/apache2/htdocs/sina/index.html  #在子目录内创建index.html文件
www.sina.com
[root@localhost user1]# vim /usr/local/apache2/htdocs/sohu/index.html
www.sohu.com

3.修改主配置文件,调用子配置文件的vhosts文件

[root@localhost user1]# vim /usr/local/apache2/etc/httpd.conf       #修改主配置文件,开启文件关联
#Virtual hosts
Include etc/extra/httpd-vhosts.conf

4.修改子配置文件的vhosts文件,编辑虚拟主机标签

[root@localhost user1]# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf #修改子配置文件,编写虚拟主机标签
#<Directory "/usr/local/apache2/htdocs/sohu">      #可以为sohu虚拟主机的家目录设置权限,也可以不写该标签就是默认权限
    #Options Indexes FollowSymLinks
    #AllowOverride None
    #Require all granted
#</Directory>
<VirtualHost 10.0.0.150:80>                #指定虚拟主机的标签(虚拟主机=网站),已知虚拟主机的IP和端口。
    ServerAdmin webmaster@sina.com            #管理员邮箱
    DocumentRoot "/usr/local/apache2/htdocs/sina/"   #指定虚拟主机(网站)的家目录
    ServerName www.sina.com                 #指定虚拟主机(网站)的域名
    ErrorLog "logs/www.sina.com-error_log"        #错误日志
    CustomLog "logs/www.sina.com-access_log" common   #访问日志
</VirtualHost>
<VirtualHost 10.0.0.150:80>
    ServerAdmin webmaster@sohu.com
    DocumentRoot "/usr/local/apache2/htdocs/sohu/"
    ServerName www.sohu.com
    ErrorLog "logs/www.sohu.com-error_log"
    CustomLog "logs/www.sohu.com-access_log" common
</VirtualHost>

5.测试

[root@localhost user1]# elinks www.sohu.com       #apachectl restart重启服务后,进行测试,验证不同域名的内容
[root@localhost user1]# curl www.sina.com

  当客户端访问www.sohu.com时,Apache服务端提供sohu的网站页面;
  当客户端访问www.sina.com时,Apache服务端提供sina的网站页面;
  这样可知,Apache服务器可以部署多个虚拟主机,也就是多个网站。


3.4域名跳转

实验条件:虚拟主机能正常访问,已经建立起来了

状态码:301永久跳转,302临时跳转

1.修改主配置文件,开启rewrite模块进行重写

[root@localhost admin]# vim /usr/local/apache2/etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

2.修改子配置文件的vhosts文件,开启.htaccess规则配置

[root@localhost admin]# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf 
<Directory "/usr/local/apache2/htdocs/sohu">  #对要被跳转的虚拟主机的家目录设置权限,开启规则配置文件
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
<VirtualHost 10.0.0.150:80>            #虚拟主机sina的标签
    ServerAdmin webmaster@sina.com
    DocumentRoot "/usr/local/apache2/htdocs/sina/"
    ServerName www.sina.com            #基于域名的虚拟主机
    ErrorLog "logs/www.sina.com-error_log"
    CustomLog "logs/www.sina.com-access_log" common
</VirtualHost>
<VirtualHost 10.0.0.150:80>            #虚拟主机sohu的标签
    ServerAdmin webmaster@sohu.com
    DocumentRoot "/usr/local/apache2/htdocs/sohu/"
    ServerName www.sohu.com            #基于域名的虚拟主机
    ErrorLog "logs/www.sohu.com-error_log"
    CustomLog "logs/www.sohu.com-access_log" common
</VirtualHost>

3.创建规则配置文件,要放在虚拟主机的家目录内

[root@localhost admin]# vim /usr/local/apache2/htdocs/sohu/.htaccess
RewriteEngine   on                                #  开启rewrite功能
RewriteCond     %{HTTP_HOST}    ^www.sohu.com                #  把以www.sohu.com开头的内容赋值给HTTP_POST变量
RewriteRule     ^(.*)$   http://www.sina.com/$1  [R=permanent,L]     #  ^(.*)$表示客户端要访问的资源;  $1把.*代指的内容赋值过去;
                                           # R=permanent永久重定向=301;  L表示这是最后一条生效的规则
[root@localhost admin]# apachectl -t     Syntax OK [root@localhost admin]# apachectl stop [root@localhost admin]# apachectl start

 4.测试结果

[root@localhost admin]# curl www.sina.com        #测试两个域名
www.sina.com
[root@localhost admin]# curl www.sohu.com        #跳转页面,可以看到href标签
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com/">here</a>.</p>
</body></html>
[root@localhost admin]# elinks www.sohu.com 

 

3.5Apache+OpenSSL实现https传输

1.准备工作

[root@localhost admin]# vim /usr/local/apache2/etc/httpd.conf      #开启Apache的SSL模块
LoadModule ssl_module modules/mod_ssl.so
[root@localhost modules]# ls -l /usr/local/apache2/modules/ | grep ssl #检测模块是否安装
-rwxr-xr-x. 1 root root   895160 May 15 04:27 mod_ssl.so
[root@localhost modules]# apachectl -M | grep ssl             #检测模块是否开启
 ssl_module (shared)

2.CA证书申请

[root@localhost apache2]# mkdir /usr/local/apache2/cert    #创建证书保存目录
[root@localhost cert]# openssl genrsa -out ca.key 1024     #生成RSA私钥
[root@localhost cert]# openssl -req -new -key ca.key -out person.csr  #生成公钥(证书)
[root@localhost cert]# openssl x509 -req -days 365 -sha256 -in person.csr -signkey ca.key -out person.crt  #对公钥(证书)进行签字颁发
[root@localhost cert]# ls -l /usr/local/apache2/cert/
total 12
-rw-r--r--. 1 root root 887 May 16 13:07 ca.key
-rw-r--r--. 1 root root 757 May 16 13:10 person.crt
-rw-r--r--. 1 root root 660 May 16 13:08 person.csr

3.配置文件修改

a.调用ssl模块、socache_shmcb模块;调用子配置文件的ssl文件

[root@localhost admin]# vim /usr/local/apache2/etc/httpd.conf  #取消下面的注释
LoadModule ssl_module modules/mod_ssl.so
Include etc/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

b.修改子配置文件的ssl文件,调用公钥/私钥文件

[root@localhost lamp]# vim /usr/local/apache2/etc/extra/httpd-ssl.conf 
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM  #修改加密套件
SSLHonorCipherOrder on                         
SSLCertificateFile "/usr/local/apache2/cert/person.crt"        #指定公钥位置
SSLCertificateKeyFile "/usr/local/apache2/cert/ca.key"        #指定私钥位置

c.修改主配置文件,添加虚拟主机来监听https的443端口,默认只监听http的80端口

[root@localhost lamp]# vim /usr/local/apache2/etc/httpd.conf
<VirtualHost _default_:443>              #添加基于端口的虚拟主机,监听443端口
        DocumentRoot "/usr/local/apache2/htdocs" #要和本文件内,默认的目录位置一致
        ServerName localhost:443
        SSLCertificateFile cert/person.crt
        SSLCertificateKeyFile cert/ca.key
        SSLCertificateChainFile cert/person.crt
</VirtualHost>

到这一步,已经成功实现Apache+OpenSSL的加密传输,只不过客户端访问服务端时需要主动加上https://前缀,如果客户端忘记添加呢?所以我们可以强制http转为https。

4.修改主配置文件,强制http跳转https

[root@localhost cert]# vim /usr/local/apache2/etc/httpd.conf
<Directory "/usr/local/apache2/htdocs">
    RewriteEngine on
    RewriteCond   %{SERVER_PORT}  !^443$
    RewriteRule   ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L]
</Directory>
[root@localhost sina]# apachectl restart

5.测试

[root@localhost cert]# apachectl restart
[root@localhost cert]# netstat -antp

 

3.6Apache日志切割

关闭https强制跳转、关闭虚拟主机、关闭OpenSSL

1.修改主配置文件,调用PREFIX/bin/rotatelogs工具进行日志切割

[root@localhost apache2]# vim /usr/local/apache2/etc/httpd.conf
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d.log 86400"       #管道符|将产生的日志交给rotatelogs这个工具,apache自带的切割日志工具  
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" combinned  #参数-l用于校准时区为UTC,也就是北京时间
                                                                #86400单位为秒,1天=86400秒,指的是每天切割一次日志
                                                                #combined为日志的格式,在httpd.conf中有定义;还有一种common格式   [root@localhost apache2]# apachectl -t Syntax OK [root@localhost apache2]# ls /usr/local/apache2/logs/ access_log httpd.pid www.sina.com-access_log www.sohu.com-access_log error_log ssl_request_log www.sina.com-error_log www.sohu.com-error_log
[root@localhost apache2]# apachectl restart [root@localhost apache2]# ls /usr/local/apache2/logs/ access_log error_log ssl_request_log www.sina.com-error_log www.sohu.com-error_log error_20200516.log httpd.pid www.sina.com-access_log www.sohu.com-access_log [root@localhost apache2]# curl 10.0.0.150 <html><body><h1>It works!</h1></body></html> [root@localhost apache2]# ls /usr/local/apache2/logs/ access_20200516.log error_20200516.log httpd.pid www.sina.com-access_log www.sohu.com-access_log access_log error_log ssl_request_log www.sina.com-error_log www.sohu.com-error_log

 

3.7不记录指定文件类型的日志

如果一个网站访问量特别大,那么访问日志就会很多,但有一些访问日志我们其实是可以忽略掉的,比如网站的一些图片,还有js、css等静态对象。而这些文件的访同往往是巨量的,而且即使记录这些日志也没有什么用,那么如何忽略不记录这些日志呢?

1.配置日志不记录图片访问

[root@localhost cert]# vim /usr/local/apache2/etc/httpd.conf
<Directory "/usr/local/apache2/htdocs">          #在htdocs标签中添加内容
    SetEnvIf Request_URI ".*\.gif$" imagine-request    
    SetEnvIf Request_URI ".*\.jpg$" imagine-request
    SetEnvIf Request_URI ".*\.png$" imagine-request
    SetEnvIf Request_URI ".*\.swf$" imagine-request
    SetEnvIf Request_URI ".*\.bmp$" imagine-request   #在原来的访问日志配置基础上,增加了一些image-request的定义,比如把gif、jpg、bmp等结尾进行标记,然后在配置文件后加一个标记env=!imagge-request,表示不记录这些标签所代表的访问日志。
    SetEnvIf Request_URI ".*\.js$" imagine-request
    SetEnvIf Request_URI ".*\.css$" imagine-request
</Directory>
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" common env=!image-request

 Apache Apache

[root@localhost libxml2-2.6.30]# tailf  /usr/local/apache2/logs/access_20200516.log 
[root@localhost libxml2-2.6.30]# tail -f /usr/local/apache2/logs/access_20200516.log 

 

3.8Apache配置静态缓存

所说的静态文件指的是图片、js、css等文件,用户访问一个站点,其实大多数元素都是图片、js、css等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些静态文件总不能一直缓存,它总有一些时效性,那么就得设置这个过期时间。

方法一:

1.配置静态缓存,修改主配置文件,开启expires模块

[root@localhost cert]# vim /usr/local/apache2/etc/httpd.conf    #在Directory下插入
LoadModule expires_module modules/mod_expires.so
</Directory>
  <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresByType image/png "access plus 1 days"
    ExpiresByType image/jpeg "access plus 12 hours"
  </IfModule>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>

2.重启服务验证,使用curl来验证缓存是否成功

[root@localhost cert]# apachectl -t
Syntax OK
[root@localhost cert]# apachectl restart

[root@localhost cert]# curl -x10.0.0.150:80 'http://10.0.0.150/222.png' -I
HTTP/1.1 200 OK
Date: Sat, 16 May 2020 15:13:42 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.2k-fips PHP/7.3.18
Last-Modified: Sat, 16 May 2020 15:11:36 GMT
ETag: "460f1-5a5c55887fa00"
Accept-Ranges: bytes
Content-Length: 286961
Cache-Control: max-age=86400
Expires: Sun, 17 May 2020 15:13:42 GMT
Content-Type: image/png

 

方法二:

1.配置静态缓存,修改主配置文件,使用mod_headers模块(默认开启)

[root@localhost cert]# vim /usr/local/apache2/etc/httpd.conf  #在Directory下插入
</Directory>
  <IfModule mod_headers.c>
        <filesmatch "\.(html|htm|txt)$">
           header set cache-control "max-age=6000"
        </filesmatch>
  </IfModule>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>

2.重启服务验证,使用curl来验证缓存是否成功

[root@localhost cert]# vim /usr/local/apache2/htdocs/test1.html
[root@localhost cert]# apachectl -t
Syntax OK
[root@localhost cert]# apachectl restart
[root@localhost cert]# curl -x10.0.0.150:80 'http://10.0.0.150/test1.html' -I
HTTP/1.1 200 OK
Date: Sat, 16 May 2020 15:24:45 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.2k-fips PHP/7.3.18
Last-Modified: Sat, 16 May 2020 15:23:22 GMT
ETag: "10-5a5c5829f80c5"
Accept-Ranges: bytes
Content-Length: 16
cache-control: max-age=6000
Content-Type: text/html

 

3.9Apache禁止解析PHP

某个目录下禁止解析PHP,这个很有作用,我们做网站安全的时候,这个用的很多,比如某目录可以上传文件,为了避免上传的文件有木马,所以我们禁让这个目录下面的访问解析。

1.修改主配置文件,关闭php_admin_flag

[root@localhost libxml2-2.6.30]# mkdir /usr/local/apache2/htdocs/data/      #创建一个虚拟主机(网站)的家目录
[root@localhost libxml2-2.6.30]# vim /usr/local/apache2/htdocs/data/x.php    #创建一个php文件用来测试
<?php
        echo "hello";
[root@localhost libxml2-2.6.30]# apachectl -t
Syntax OK
[root@localhost libxml2-2.6.30]# apachectl restart
[root@localhost libxml2-2.6.30]# curl 10.0.0.150/data/x.php  -I          #成功解析php文件 
HTTP/1.1 200 OK
Date: Sat, 16 May 2020 15:39:38 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.2k-fips PHP/7.3.18
X-Powered-By: PHP/7.3.18
Content-Type: text/html; charset=UTF-8

[root@localhost user1]# vim /usr/local/apache2/etc/httpd.conf            #在配置文件最后面插入如下整个部分
<Directory /usr/local/apache2/htdocs/data>                        #指定该目录下不能解析php文件
  php_admin_flag engine off
  <filesmatch "(.*)php">
    Order deny,allow
    Deny from all
  </filesmatch>
</Directory>
[root@localhost apache2]# apachectl -t        
Syntax OK
[root@localhost apache2]# apachectl restart
[root@localhost libxml2-2.6.30]# curl 10.0.0.150/data/x.php  -I          #不能解析php文件
HTTP/1.1 403 Forbidden
Date: Sat, 16 May 2020 15:38:37 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.2k-fips PHP/7.3.18
Content-Type: text/html; charset=iso-8859-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:无法将php作为apache2模块


下一篇:MySQL-在哪里放置Web服务器根目录?