Apache和PHP结合 及 Apache默认虚拟主机

配置httpd支持php目录概要

  • httpd主配置文件/usr/local/apache2/conf/httpd.conf
  • vim /usr/local/apache2/conf/httpd.conf //修改如下4个地方
    • ServerName
    • Require all denied
    • AddType application/x-httpd-php .php
    • DirectoryIndex index.html index.php
    • /usr/local/apache2/bin/apachectl -t //测试语法
    • /usr/local/apache2/bin/apachectl start //启动服务
    • netstat -lntp curl localhost
    • vim /usr/local/apache2/htodcs/test.php //增长以下内容
    • <?php echo 123; ?>
  • curl localhost/test.php

编辑httpd的配置文件

  • 在安装好Apache、mysql、httpd,可是还未结合在一块儿,虽然apche调用了php做为它的模块,可是还不知道是否能解析php,因此如今仍是须要编辑Apache的配置文件
  • httpd主配置文件,在/usr/local/apache2/conf/httpd.conf下
  • 编辑四个地方
  • 定义ServerName,去除 # 号
    • 在/usr/local/apache2/bin/apachectl restart 乍一看是报错信息,其实只是一个警告信息,并非错误,若想不看到这个提示,能够在 /usr/local/apache2/conf/httpd.conf 取消掉
    • 方法:在/usr/local/apache2/conf/httpd.conf 中搜索 /ServerName ,而后将 # ServerName www.example.com:80 前的# 去除掉,保存退出便可
  • 把Require all denied 改为
    • 如果不更改,那么访问会是 403

第一处:取消警告信息

  • 在运行/usr/local/apache2/bin/apachectl start 会跳出警告信息
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf        //ctrtl+z退出下

[1]+  已中止               vim /usr/local/apache2/conf/httpd.conf
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl restart        //会看到警告信息
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::c44:f02d:4192:8d42. Set the 'ServerName' directive globally to suppress this message
[root@yong0-02 ~]# fg        //回到刚暂停的任务中——>vim /usr/local/apache2/conf/httpd.conf      

在文件中搜索 /ServerName
而后将 # ServerName www.example.com:80 前的# 去除掉保存退出便可
  • 在去除# 号以后,运行apache,会提示79行错误
    • 缘由:是由于在最后调用了两个PHP,加载了两个PHP,致使冲突
    • 解决方法:只须要注释掉一个PHP便可
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl restart
httpd not running, trying to start
/usr/local/apache2/bin/apachectl: 行 79:  1990 段错误               $HTTPD -k $ARGV
  • 在注释掉一个PHP,就会发现不提示警告信息了

[root@yong-02 ~]# /usr/local/apache2/bin/apachectl start
  • 查看httpd进程
[root@yong-02 ~]# ps aux |grep httpd
root      1995  0.1  0.6 253536 12576 ?        Ss   21:02   0:00 /usr/local/apache2/bin/httpd -k restart
daemon    2086  0.0  0.5 540364  9452 ?        Sl   21:02   0:00 /usr/local/apache2/bin/httpd -k restart
daemon    2087  0.0  0.5 540364  9452 ?        Sl   21:02   0:00 /usr/local/apache2/bin/httpd -k restart
daemon    2088  0.0  0.5 540364  9452 ?        Sl   21:02   0:00 /usr/local/apache2/bin/httpd -k restart
root      2171  0.0  0.0 112676   984 pts/0    R+   21:02   0:00 grep --color=auto httpd
  • 由于在打开了ServerName,就不在提示警告信息了

第二处:更改Require all denied

  • 首先,咱们能够用浏览器访问本身虚拟机的IP,会发现没法访问,则会提示检查代理服务器和防火墙
  • 在遇到这种问题,排查方法,先查看IP是不是通的,用物理机去ping 虚拟机的 IP

  • 若IP是通的,再去判断80端口是不是通的——>用物理机去telnet 80端口

  • 若是windows 并无打开telnet 客户端,按照下面方法安装这个命令
  • 打开telnet客户端——>注意:不要打开Telnet服务端,不然会监听23端口,不安全
  • 打开物理机的控制面板
  • 而后选择程序
  • 再选择打开或关闭Windows功能
  • 选择Telnet客户端,并打开

输入图片说明 

如果能够运行 telnet 命令,那出来的则是一个结果,显示80并不通php

  • 由于在linux虚拟机上,并无打开80端口
  • 在虚拟机上,使用iptables -nvL 命令,会查看到80端口并无打开
[root@yong-02 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  347 32935 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  266 26673 INPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  266 26673 INPUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  266 26673 INPUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
  262 26469 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
等等,只截取了一部分,会发现80端口并无打开
  • 若想要windows机器去访问它,还须要加上一个操做
  • 单独一条命令,临时加上80端口——> iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@yong-02 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • 这时再用物理机去访问虚拟机IP,则会显示 It works!

  • 以前不能正常访问,就是因为防火墙的规则,没有加上80端口,不能正常访问
  • 这时打开windows来查看80端口,这样的界面表示80端口通了

  • 在物理机中按 ctrl+] 退出来,而后在按 quit 字符退出

  • 这时删除以前加的那条规则,再来物理机查看虚拟机的80端口,会发现不通了
[root@yong-02 ~]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT

  • 这时在把规则添加上,会发现又能够正常访问了
  • 有时浏览器去访问虚拟机的IP,会显示 403Forbidden 错误界面
  • 这是由于在/usr/local/apache2/conf/httpd.conf配置文件中,有一个Require all denied
  • 而后搜索 /denied ,把他改为granted
  • 打开/usr/local/apache2/conf/httpd.conf配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

而后搜索 /denied ,会看到
<Directory />
    AllowOverride none
    Require all denied
</Directory>
把 denied 改为 granted
  • 以前能够在浏览器正常访问虚拟机ip,是由于
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

是由于DocumentRoot指定了Directory,即以下:
DocumentRoot "/usr/local/apache2/htdocs"        
<Directory "/usr/local/apache2/htdocs">


还有后面的
Require all granted

如果将这里的Require all granted改为Require all denied ,那确定没法浏览
  • 在更改完配置文件,须要从新加载配置
  • /usr/local/apache2/bin/apachectl -t //检查你修改的配置文件是否存在错误
    • -t参数,会检查你修改的配置文件是否存在语法错误
  • 若语法不对,则会报错
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
  • 从新加载配置文件
    • graceful 只会从新加载配置文件,而不会重启你的服务
  • 就是说即便你的配置文件有问题,它最多加载不成功,而不会把你的进程杀掉
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 在配置文件中的,两处位置都应该改为granted,这是为了防止你在打开虚拟主机配置文件的时候,显示403Forbidden(403是它的状态码,正常状况下,状态码都是200)

第三处:由于要支持php,因此要增长一行php相关的配置

  • 若是不增长这一行,那么php就没法解析
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

搜索 /AddType,而后
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz 

在这两行下面,增长php一行
    AddType application/x-httpd-php .php

第四部分,增长一个索引页

  • 索引页做用:在打开一个网站,为何不输入index.php就能够直接访问呢
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

搜索 /Index ,找到
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

在index.html后加 index.php
显示为
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
  • 而后检查配置文件是否有错误
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
  • 而后从新加载配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful

检查Apache是否支持解析php5

  • 验证,写一个测试php脚本
  • 在访问的时候,访问的是htdocs下的文件
  • phpinfo,能够把php的相关信息打印出来
[root@yong-02 ~]# vim /usr/local/apache2/htdocs/1.php

在文件中写入

<?php
phpinfo();
?>

而后保存退出
  • 而后在浏览器访问虚拟机ip地址并添加页面地址(IP/index.php),而后会看到显示出内容——>增长一个文件是不须要重启php的
http://192.168.180.135/1.php

  • 当看到php正常显示,如上图,那说明php支持支持解析html

  • 若是php不支持解析(以上四步骤错误一处),那么刷新页面显示出来的则是源代码(就是 1.php 文件中的代码)mysql

  • 若是遇到php没法解析,则去检查Apache的配置文件linux

    [root@yong-02 ~]# /usr/local/apache2/bin/apachectl -M
    Loaded Modules:
     core_module (static)
     so_module (static)
     http_module (static)
     mpm_event_module (static)
     authn_file_module (shared)
     authn_core_module (shared)
     authz_host_module (shared)
     authz_groupfile_module (shared)
     authz_user_module (shared)
     authz_core_module (shared)
     access_compat_module (shared)
     auth_basic_module (shared)
     reqtimeout_module (shared)
     filter_module (shared)
     mime_module (shared)
     log_config_module (shared)
     env_module (shared)
     headers_module (shared)
     setenvif_module (shared)
     version_module (shared)
     unixd_module (shared)
     status_module (shared)
     autoindex_module (shared)
     dir_module (shared)
     alias_module (shared)
     php5_module (shared)
    [root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf
    
    在文件中搜索/libphp5,看是否加载了这一行配置
    LoadModule php5_module        modules/libphp5.so
    [root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf
    
    在文件搜索/AddType中关于php这一行配置是否存在
    AddType application/x-httpd-php .php
    [root@yong-02 ~]# ls /usr/local/apache2/htdocs/
    1.php  index.html
    • 第一项,查看是否加载php5模块,使用/usr/local/apache2/bin/apachectl -M命令
      • 若是没有加载这个模块,查看这个模块是否存在。使用 ls /usr/local/apache2/modules/libphp5.so查看文件是否存在,如果文件都没有,那么确定不会加载这个模块
    • 第二项,若是有文件,则没有显示php模块,那么就要去看apache的配置文件中有没有加载 libphp5 这一行配置,在文件中搜索/libphp5 ,若是没有这一行配置,那么确定也是没法解析的
    • 第三项,检查配置文件中是否加载了 AddType application/x-httpd-php .php 这一行
      • 在 .php 前面有一行空格,须要注意下!不能遗忘!!!——>使用 /usr/local/apache2/bin/apachectl -t 能够检查出配置写错了
    • 第四项,检查是否加了 index.php
      • 在访问一个网站的时候,好比访问www.baidu.com的时候,并不用是www.baidu.com/index.php访问,会发现,两个访问出的页面是相同的,就是由于这里有索引页(或者叫作index页),它默认能跳转到这个页面下去,包括直接输入虚拟机ip的时候,也会访问到 It works!这是访问到的是 index.html ,就是由于咱们定义了一个index

检查Apache是否支持解析php7

  • 在配置文件中,注释掉php5,打开php7
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

在文件中搜索 /libphp7,而后注释掉php5打开php7
# LoadModule php5_module        modules/libphp5.so
LoadModule php7_module        modules/libphp7.so
  • 快捷键 ctrl+r ,能够快速执行命令历史中所用过的一些命令
    • 在快捷键 ctrl+r 以后,而后输入命令的一些字母,就会显示出你使用过的命令
  • 而后检查配置文件是否存在语法错误,并从新加载配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 会看到更换了php7以后,用物理机访问虚拟机的ip,也会正常显示

  • 在浏览器打开看到的phpinfo,和/usr/local/php7/bin/php -i |less看到的结果基本是一致的,只不过一个是文本形式,一个是图形化,图形化看起来更加直观,清晰明了
[root@yong-02 ~]# /usr/local/php7/bin/php -i |less
phpinfo()
PHP Version => 7.1.6

System => Linux yong-02 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64
Build Date => May 26 2018 00:00:30
Configure Command =>  './configure'  '--prefix=/usr/local/php7' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-config-file-path=/usr/local/php7/etc' '--with-pdo-mysql=/usr/local/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2' '--with-openssl' '--with-mcrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-mbstring' '--enable-sockets' '--enable-exif'
Server API => Command Line Interface
Virtual Directory Support => enabled
Configuration File (php.ini) Path => /usr/local/php7/etc
Loaded Configuration File => (none)
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API => 20160303
PHP Extension => 20160303
Zend Extension => 320160303
Zend Extension Build => API320160303,TS


等等等,只截取了一部分

Apache配置文件

  • 为何能够在htdocs下面中能够访问到 index.html、1.php
  • 这是由于在/usr/local/apache2/conf/httpd.conf配置文件中的 DocumentRoot 参数,定义了网站的根目录在哪里,域名就是定义的ServerName
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

在文件中搜索/htdocs,其中DocumentRoot 定义了文件根目录在哪里
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">

搜索/ServerName,域名就是定义的ServerName ,只不过这个ServerName,,可使用任何一个域名去访问它,好比可使用IP能够访问,使用example.com能够访问,用www也能够去访问它
ServerName www.example.com:80

 

 

httpd的默认虚拟主机目录概要

  • 一台服务器能够访问多个网站,每一个网站都是一个虚拟主机
  • 概念:域名(主机名)、DNS、解析域名、hosts
  • 任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机
  • vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉#
  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改成以下

<VirtualHost *:80>web

    ServerAdmin admin@aminglinux.comsql

    DocumentRoot "/data/wwwroot/aming.com"apache

    ServerName aming.comvim

    ServerAlias www.aming.comwindows

    ErrorLog "logs/aming.com-error_log"浏览器

    CustomLog "logs/aming.com-access_log" common

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

</VirtualHost>

  •  /usr/local/apache2/bin/apachectl –t
  • /usr/local/apache2/bin/apachectl graceful

 

## 默认虚拟主机 - 默认虚拟主机,能够理解成Apache(也就是httpd),一个服务下面跑多了多个网站,跑了多个域名 - 例子,假如在服务器上,它既能访问百度,又能访问谷歌,这是两个不一样的网站,但同时都在一台服务器运行着,就用了一个httpd的服务,这个就是一个网站多个域名,每个域名对着一个虚拟主机 ## 更改hosts - 在windows下去写hosts 1. hostsl路径地址,这个和linux下的hosts相似

1. 打开物理机C盘

2. 而后选择Windows

3. 再选择System32

4. 选择dirvers

5. 选择etc

6.选择hosts

  • 能够在这个里面定义一个IP,定义一个域名,而后让这个域名指向到这个IP上去
  • 打开方式选择 记事本
  • 打开文件,会看到windows下的hosts

输入图片说明

  • 而后在hosts文件中,任何一处位置加入一行,而后保存!
  • 格式:先IP,而后空格,加域名——>域名能够写多个,一行里面能够有多个域名
    • 这个IP地址为虚拟机的IP
192.168.180.135 www.abc.com www.123.com
  • 而后物理机去ping 网址,能看到都能ping通

  • 正常状况下,不写hosts,去ping——>将hosts中添加的一行注释掉
#192.168.180.135  www.abc.com	  www.123.com
  • 而后再去物理机去ping www.abc.com,会看到IP是公网IP

  • 这个就是hosts的做用,它的目的就是让你临时访问到一个服务器上去
  • 好比用www.abc.com,用www.123.com把这个域名指向到这台机器上去——>这是在DNS尚未生效的时候使用
  • 这时候在将hosts中加入的那一行# 去掉
192.168.180.135  www.abc.com www.123.com
  • 而后用物理机中的浏览器去访问www.abc.com或www.123.com,会看到正常访问

  • 浏览器去访问www.123.com/1.php,会看到正常访问

  • 或许会有一个疑问,123.com和abc.com,包括这个IP并无在httpd的配置文件中去定义它,在配置文件中仅仅定义了 www.example.com这个域名,这个叫作Apache的默认主机 ,也就是说,任何一个域名,指向到这个 IP ,它都会访问到这个站点,这个站点就叫作默认虚拟主机——>注意:是虚拟主机
  • 若是没有作任何操做,仅仅使用了httpd.conf,它实际上就是主配置文件定义的这个ServerName,以DocumentRoot ,但这样不太好管理,毕竟一台服务器上能够跑多个域名,若不想域名都指向到这里,因此须要打开一个虚拟主机配置文件
  • 打开虚拟主机,在/usr/local/apache2/conf/httpd.conf 配置文件中
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

搜索/extra 关键词,这一行就作虚拟主机
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

把#Include conf/extra/httpd-vhosts.conf前面的 #号 去掉 Include conf/extra/httpd-vhosts.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
  • 由于配置文件仅仅能定义一个ServerName,因此如今打开一个二级配置文件
  • 二级配置文件就是虚拟主机配置文件
    • 在这个配置文件里,是能够定义多个ServerName的
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf           //虚拟主机配置文件

在打开配置文件,会发现有两个<VirtualHost *:80> ,每个<VirtualHost >都是一对出现的,每个<VirtualHost >都表明着一个主机,一个主机就是一个网站

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com    //定义管理员的邮箱——>可删除
    DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"    //定义网站的根目录在哪里
    ServerName dummy-host.example.com    //服务器名字
    ServerAlias www.dummy-host.example.com    //定义别名,别名就是一个网站能够有多个域名访问,好比能够是abc.com访问,也能够是www.abc.com访问,访问的内容是一致的
    ErrorLog "logs/dummy-host.example.com-error_log"    //错误日志
    CustomLog "logs/dummy-host.example.com-access_log" common    //访问日志
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
  • 在打开虚拟主机配置文件后,作一个更改
  • 更改后
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"   
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com        //验证
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
而后保存退出
  • 更改完配置文件,就去建立对应的目录
[root@yong-02 ~]# mkdir /data/wwwroot/
[root@yong-02 ~]# mkdir /data/wwwroot/abc.com
[root@yong-02 ~]# mkdir /data/wwwroot/111.com
  • 在对应的站点根目录下建立,定义一个php
[root@yong-02 ~]# vim /data/wwwroot/abc.com/index.php

在文件中写入
<?php
echo "abc.com";

并保存退出
  • 而后在/data/wwwroot/111.com/index.php中也定义一个php
[root@yong-02 ~]# vim /data/wwwroot/111.com/index.php


在文件中写入
<?php
echo "111.com";

并保存退出
  • 在定义完以后,去检查服务是否有错误
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
  • 而后从新加载配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 定义一个网站最核心的参数就是网站的根目录在哪里,访问的域名是什么,ServerName只能写一个,而ServerAlias能够写多个域名

虚拟主机常识

  • 一旦让虚拟主机配置文件生效了,那么以前定义的www.example.com就会失效了

测试虚拟主机

  • curl -x命令
  • 好比说,如今要访问abc,com,若不去绑定hosts,那么在虚拟机中ping www.abc.com会ping到外网上去,并无在这台机器上。若想要访问abc.com在在这台机器上,能够编辑/etc/hosts文件去指定下,或者使用curl -x选项
[root@yong-02 ~]# curl -x192.168.180.135:80 abc.com
abc.com[root@yong-02 ~]# curl -x192.168.180.135:80 abcd.com
abc.com[root@yong-02 ~]#
  • 在访问abcd.com,会发现访问的仍是abc.com,这个以前不管把任何域名指向到192.168.74.129这台机器上,都会访问到htdocs目录下面去,但如今发生了转变,不管什么域名指向过来,它都会访问到abc.com,abc.com是咱们虚拟主机配置文件里边的第一个虚拟主机,它就是默认虚拟主机。
    • 默认虚拟主机,就是不管访问什么域名,只要解析到192.168.74.129IP上,它都会访问这个网站对应的虚拟主机配置(这个默认虚拟主机就是abc.com)
  • 这时再来访问www.example.com
[root@yong-02 ~]# curl -x192.168.180.135:80 www.example.com
111.com[root@yong-02 ~]#
  • 在httpd主配置文件中有定义,在Virtual hosts虚拟主机中也有定义,结果访问到了111.com

总结

  • 在主配置文件中,httpd.conf里面,打开了虚拟主机配置文件,也就是删除到 # 号,那虚拟主机配置就生效了,一旦虚拟主机配置文件生效,那主配置文件里面所定义的DocumentRoot以及ServerName失效
  • 虚拟主机配置文件一旦打开,能够定义不少个VirtualHost,每个VirtualHost都都有一个对应的 DocumentRoot 和 ServerName ,每个VirtualHost都表明着一个站点,都是一个虚拟主机。在虚拟主机里面有一个特殊的默认虚拟主机,所谓默认虚拟主机就是不管任何域名解析到这个IP上,都会去访问默认虚拟主机
相关文章
相关标签/搜索