apache配置虚拟主机 个人理解

范例

Listen 80
#NameVirtualHost *
<VirtualHost *:8080>
  ServerName apacheconfig2
  DocumentRoot /var/www/apacheconfig/test1
  DirectoryIndex index.html   #站点的默认访问资源,即不指明请求资源时,默认访问index.html文件
 <Directory "/var/www/apacheconfig/test1">   #设置对目录的访问控制
    AllowOverride All
    Options Indexes FollowSymLinks
    Require all granted
 </Directory>
</VirtualHost>

详细可以参照官方文档  http://httpd.apache.org/docs/2.0/vhosts/examples.html#page-header

个人理解如下,如有错误,欢迎指摘。

配置虚拟主机主要设置四个要素

  IP

  端口  (Listen指令开启的端口才可以使用)

  域名

  站点根目录(设置请求资源的相对根目录)

匹配规则

  apache在匹配虚拟主机时,会首先匹配IP, 再匹配端口,最后再匹配域名,如果设有多个虚拟主机,会从上往下依次匹配,匹配成功则停止匹配,因此,越在上面,优先度越高

  IP和端口的匹配必须要严格匹配,如果IP和端口不匹配,则找不到可用的虚拟机配置,无法正常显示网页

  如果IP和端口都匹配,但所有的域名都不匹配,则默认使用IP和端口匹配的第一个虚拟机配置

  虚拟机配置匹配成功之后,要访问的资源文件是相对于站点根目录的,如果站点根目录中不存在该资源,则报404错误,此时要确保站点根目录和请求的资源文件是否正确

  IP和端口的配置都可以使用通配符*, 表示匹配本机所有的IP和端口号

  要想匹配某个端口号,前提是使用Listen指令开启对这个端口的监听

用法实例

1. 一个IP对应多个站点(所谓的站点的是否相同,指的是站点根目录是否相同,相同则是同一个站点,不同则是不同的站点)

IP相同,端口不同,域名相同。虽然可以使用同一个域名访问,端口不同,访问的站点也不同

http://www.example1.com:80匹配第一个虚拟机配置

http://www.example1.com:8080匹配第二个虚拟机配置

Listen 80
Listen 8080
<VirtualHost 172.20.30.40:80>
    ServerName www.example1.com
    DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
    ServerName www.example1.com
    DocumentRoot /www/domain-8080
</VirtualHost>

IP相同,端口相同,域名不同。虽然IP地址和端口相同,但使用的域名不同则访问的站点不同

http://www.example1.com:80匹配第一个虚拟机配置

http://www.example2.com:80匹配第二个虚拟机配置

Listen 80
<VirtualHost 172.20.30.40:80>
    ServerName www.example1.com
    DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.40:80>
    ServerName www.example2.org
    DocumentRoot /www/otherdomain-80
</VirtualHost>

2. 多个IP对应多个站点

Listen 80
<VirtualHost 172.20.30.40:80>
    ServerName www.example1.com
    DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.41:80>
    ServerName www.example2.org
    DocumentRoot /www/otherdomain-80
</VirtualHost>

3. 多个IP对应同一个站点

Listen 80
<VirtualHost 172.20.30.40:80>
    ServerName www.example1.com
    DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.41:80>
    ServerName www.example2.org
    DocumentRoot /www/domain-80
</VirtualHost>

常用指令的规则

Listen 端口号
Listen IP:端口号
<VirtualHost IP>
<VirtualHost IP:端口号>
<VirtualHost *:*>
<VirtualHost *:端口号>
<VirtualHost IP:*>

原文地址:https://www.cnblogs.com/gaoBlog/p/12096693.html

时间: 2024-12-25 23:52:12

apache配置虚拟主机 个人理解的相关文章

windows环境利用apache 配置虚拟主机

1.修改http.host #LoadModule vhost_alias_module modules/mod_vhost_alias.so #Include conf/extra/httpd-vhosts.conf 去掉这两项的# 2.修改httpd-vhosts.conf添加如下内容 <VirtualHost 127.0.0.1:80> DocumentRoot D:/wamp/www/trc ServerName www.abc.com </VirtualHost> 3.修

[Linux]Apache配置虚拟主机

Apache 配置虚拟主机的方式很多,种类也很多,主要分为两类: 基于名称的虚拟主机 (每个 IP 多个站点) 基于 IP 的虚拟主机 (每个 IP 一个站点) 基于名称的虚拟主机:  www.2cto.com 在windows下  Apache 的配置文件 conf/httpd.conf 中加载 虚拟主机配置文件  /extra/httpd-vhosts.conf 找到 Include "conf/extra/httpd-vhosts.conf" 取消注释即可. 现在,到httpd-

apache配置虚拟主机时需要注意到几个小细节

如今apache在web服务器这块市场占有率还是很高的,而配置虚拟主机现在也是用的非常多,不过在配置虚拟主机的时候一定要注意几个小细节. 首先要注意你的apache版本,注意是2.2还是2.4的. 配置2.2的时候,配置虚拟主机该这样写: NameVirtualHost ip:80   //注意此处与2.4不同 <VirtualHost ip:80> ServerName www1.myweb.com DocumentRoot "/myweb/vhost/www1" <

win10下关于apache配置虚拟主机

apache安装完默认是不开启虚拟服务器的,如果希望在本地apache上面配置虚拟服务器,类似于在网上买的虚拟主机,可以按照以下步骤进行配置: 1,修改本机的hosts文件,如下 示例:127.0.0.1 localhost127.0.0.1 xlb.com 127.0.0.1 xlb2.com 2,打开Apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. LoadModule vhost_alias_module modules/mod_vhost_alias

CentOS 5上Apache配置虚拟主机范例

昨天实践了下在CentOS 5上通过Apache直接配置虚拟主机,服务器没有安装面板软件,所以只能通过SSH远程连接操作了.Apache安装在/etc/httpd目录下,这个即是Apache的根目录,所以Apache配置文件/etc/httpd/conf/httpd.conf中的ServerRoot设置的是ServerRoot “/etc/httpd”.我们编辑httpd.conf,在虚拟主机配置区看到如下的代码: #NameVirtualHost *:80ps:中间数行无关紧要注释略去了.#<

Apache配置虚拟主机后,不能访问localhost的问题

今天想试用一下php7,但是发现php7只支持Apache2.4版本,而我电脑上的Apache是2.2版本,为了想尝鲜,就必须去下载新的Apache2.4 php7和apache2.4安装整合以后,localhost可以正常访问,没问题. 然后我又配置了几个虚拟主机,这时候,虚拟主机可以正常访问,但是localhost就访问不了了. 其实以前这种问题我也经历过,比如我之前用的php5.4搭配Apache2.2,就可以虚拟主机和localhost都可以访问: 但是我之前怎么解决的我也不记得了,今天

mac 安装apache 配置虚拟主机

来源:http://blog.csdn.net/qianling3439/article/details/29410381 启动Apache 打开“终端(terminal)”,输入 sudo apachectl -v,(可能需要输入机器秘密).如下显示Apache的版本 接着输入 sudo apachectl start,这样Apache就启动了.打开Safari浏览器地址栏输入 “http://localhost”,可以看到内容为“It works!”的页面.其位于“/Library(资源库)

关于apache配置虚拟主机的相关问题

ubuntu lanmp环境下,一个服务器多站点的设置 首先理解apache多站点配置的思路: 1  将client的域名解析至同一ip下: 2  在服务器中,将各种域名指向某一特定的网页: 其中2中的具体操作步骤: 1 首先在服务器跟目录下任意位置创建自己的项目: 2 修改apache的配置文件,使apache将特定的域名指向特定的项目. 对于操作步骤2:在apache的配置文件夹sites-available中添加虚拟主机,在创建的虚拟主机中绑定特定的域名和项目路径,之后再在sites-en

虚拟机lamp环境下,Apache配置虚拟主机

1.在Apache配置文件中开启虚拟主机功能:即:Include etc//extra/httpd-vhosts.conf把前面的#去掉: 2.在extra目录下找到文件httpd-vhosts.conf,添加如下配置: <Directory "/Data/www/thinkphp"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Dire