一、改动httpd.conf

打开appserv的安装文件夹,找到httpd.conf文件,分别去掉以下两行文字前面的#号。

  1. #LoadModule vhost_alias_module modules/mod_vhost_alias.so

去掉#意思是启用apache的虚拟主机功能。

  1. #Include conf/extra/httpd-vhosts.conf

去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置

二、改动httpd-vhosts.conf

打开该文件,看到下面类似内容。虚拟主机的配置也是參照下面内容配置。下面对该内容进行解说

  1. NameVirtualHost *:80
  2.  
  3. <VirtualHost *:80>
  4. ServerAdmin webmaster@dummy-host.www.phpStudy.net
  5. DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"
  6. ServerName dummy-host.www.phpStudy.net
  7. ServerAlias www.dummy-host.www.phpStudy.net
  8. ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"
  9. CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common
  10. </VirtualHost>

NameVirtualHost *:80

注意1:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,可是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost能够定义多个。 

注意2:全部符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主server将不理会。NameVirtualHost定义了而<VirtualHost>标签未定义的的请求,server会找不到对应的虚拟主机而将无法处理。所以每一个NameVirtualHost定义的參数至少要有一个<VirtualHost>相匹配。

注意3:假设设置NameVirtualHost 或<VirtualHost>为*:80的话,全部针对80port的请求,都会被虚拟主机处理,请求会依据域名指向某个虚拟主机。假设有来自80port的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主server将无法收到来自80port的不论什么请求。为此也要为主server配置一个虚拟主机。

ServerAdmin 管理员邮箱

DocumentRoot 站点文件夹 (注意:假设站点文件夹中的路径有空格,请在路径两端加上双引號)

ServerName 要绑定的域名(必填)

ServerAlias 要绑定的虚拟主机的别名。(可选,假设多个域名,中间以空格分隔,假设没有,则去掉该行)

支持*,?两种通配符,比方 *.abc.com,表示随意一个abc.com的二级域名都可訪问。

CustomLog 用户日志文件(可选,假设不须要,则去掉该行)

ErrorLog 错误日志(可选,假设不须要,则去掉该行)

基于IP地址的虚拟主机

  1. <VirtualHost 172.20.30.40>
  2. DocumentRoot /www/example1
  3. ServerName www.example.com
  4. </VirtualHost>
  1. <VirtualHost 172.20.30.50 192.168.0.10:80>
  2. DocumentRoot /www/example2
  3. ServerName www.example.org
  4. </VirtualHost>

每一个虚拟主机可定义多个IP,之间用空格隔开

各种虚拟主机的混用

  1. Listen 80
  2. Listen 81
  3.  
  4. NameVirtualHost 172.20.30.40
  5.  
  6. <VirtualHost 172.20.30.40>
  7. DocumentRoot /www/example1
  8. ServerName www.example.com
  9. </VirtualHost>
  10.  
  11. <VirtualHost 172.20.30.40>
  12. DocumentRoot /www/example2
  13. ServerName www.example.org
  14. </VirtualHost>
  15.  
  16. NameVirtualHost 172.20.30.40:81
  17.  
  18. <VirtualHost 172.20.30.40:81>
  19. DocumentRoot /www/example3
  20. ServerName www.example3.net
  21. </VirtualHost>
  22.  
  23. # IP-based
  24. <VirtualHost 172.20.30.50>
  25. DocumentRoot /www/example4
  26. ServerName www.example4.edu
  27. </VirtualHost>
  28.  
  29. <VirtualHost 172.20.30.60:81 172.20.30.40:81>
  30. DocumentRoot /www/example5
  31. ServerName www.example5.gov
  32. </VirtualHost>

虚拟主机混用时的问题

一、虚拟主机混用能够这样理解:一行NameVirtualHost指令定义的全部虚拟主机为一组;该组与一个基于IP的虚拟主机平级。即把一行NameVirtualHost定义的整个组看作是一个基于IP的虚拟主机。

二、虚拟主机指定的port必须是Listen定义的。假设虚拟主机没有指定port,则觉得是80port。假设NameVirtualHost * 这样定义,是指全部地址的全部已定义port。

三、更详细的地址定义优先。比方NameVirtualHost指令定义了*:80,而某个基于IP的虚拟主机定义为192.168.0.1:80,那么此时如有对192.168.0.1:80的请求,那请求会被优先指向192.168.0.1:80定义的虚拟主机。所以为了避免混乱,不要定义相互有交叉或包括的地址区间。

四、一个虚拟主机,能够同一时候为基于域名和基于IP的。如上一例中最后一个虚拟主机。这样符合两种定义的请求都会被指同一个虚拟主机。有时要差别内外网对虚拟主机的訪问时能够这样,由于来自内网的请求可能和来自外网的请求可能不一样,可是它们须要指向同一个虚拟主机。

使用"_default_"虚拟主机

这个虚拟主机能够理解成基于IP的虚拟主机

  1. <VirtualHost _default_:*>
  2. DocumentRoot /www/default
  3. </VirtualHost>

这个虚拟主机将接管与其他虚拟主机IP和port不匹配的请求。只是如此一来,主server将不会处理不论什么请求。因此把主server配置成一个虚拟主机是必要的。

本地机器代理在其他机器上执行的虚拟主机

  1. <VirtualHost 158.29.33.248>
  2. ProxyPreserveHost On
  3. ProxyPass /foo/no !
  4. ProxyPass /foo http://192.168.111.2
  5. ProxyPassReverse /foo http://192.168.111.2
  6. ServerName hostname.example.com
  7. </VirtualHost>

一、首先这是一个基于IP的虚拟主机,它接收并处理对IP地址158.29.33.248的请求。

二、ProxyPass /foo http://192.168.111.2 将把对http://158.29.33.248/foo的请求转换为一个代理请求,该请求指向http://192.168.111.2。

三、ProxyPass /foo/no ! 不代理针对/foo/no的请求。这个必须放在正常代理指令之前。

四、ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。

五、ProxyPassReverse /foo http://192.168.111.2 能够保证请求URL在其他机器上被重定向后,本机处理时也能够保持一致。详细看手冊关于反向代理的部分。

六、基于域名的虚拟主机也是相同的道理。无论是什么类型的虚拟主机,它仅仅是处理归它处理的请求而已。

配置实例

需求1:

这是一个基于IP的虚拟主机使用实例

一个项目数据应用,为了防止因为域名解析问题导致不能正常訪问,因此採用IP的方式訪问接口。比方:http://61.122.3.6:8080/ 这种方式。虚拟主机的配置例如以下:

1、在httpd.conf中Listen 80以下添加�一行,内容为:Listen 8080,即监听8080port

2、配置虚拟主机配置

  1. #NameVirtualHost 61.122.3.6:8080 这一行能够不须要。经測试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。
  2. <VirtualHost 61.122.3.6:8080>
  3. ServerAdmin webmaster@dummy-host.www.phpStudy.net
  4. DocumentRoot "d:/web/openj"
  5. </VirtualHost>

apache2.2 虚拟主机配置的更多相关文章

  1. apache2.2 虚拟主机配置详解

    一.修改httpd.conf 打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. #LoadModule vhost_alias_module modules ...

  2. server下apache2.4.*虚拟主机配置Forbidden You don't have permission to access / on this server.

    前言: 继前面两节笔记之后,在配置一个虚拟主机时,这中间却遇见了一个问题,这里需要描述做一下笔记,刚刚安装的是Ubuntu server,apt-get下来的apache的版本是2.4.7,之前一直用 ...

  3. apache2.2 虚拟主机配置(转)

    转自:http://blog.csdn.net/zm2714/article/details/8351342 一.改动httpd.conf 打开appserv的安装文件夹,找到httpd.conf文件 ...

  4. linux下apache2的虚拟主机配置

    1,起因 在一星期前吧,大波说既然咱们有了自己的服务器,二级域名了.可以考虑怎样每人一个域名,分别指向我们各自的空间.想法挺好,避免我们个人的东西放在同一主页上.那就做吧 2,第一次尝试 (1)在域名 ...

  5. apache2.4 虚拟主机配置

    网上教程很多,仅记录我的配置,可供参考 一.修改httpd.conf 打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. #LoadModule vhost_ ...

  6. Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置

    环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...

  7. ubuntu apache2配置详解(含虚拟主机配置方法)

    ubuntu apache2配置详解(含虚拟主机配置方法) 在Windows下,Apache的配置文件通常只有一个,就是httpd.conf.但我在Ubuntu Linux上用apt-get inst ...

  8. apache2.4.X虚拟主机配置

    1,用记事本打开apache目录下httpd文件(如:D:\wamp\bin\apache\apache2.2.8\conf),找到如下模块       # Virtual hosts     #In ...

  9. apache2 httpd 基于域名的虚拟主机配置 for centos6X 和debian-8

    全系统虚拟主机: for debian 系统的apache2 域名 虚拟主机

随机推荐

  1. bzoj 3594 [Scoi2014]方伯伯的玉米田(DP+二维BIT)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题意] 给定一个n个数的序列,有K次将一个区间内的数加1的机会,问最长不下降子 ...

  2. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  3. Embedded之memory test

    1 main.c #include "led.h" #define BASE_ADDRESS (volatile datum *) 0x10000000 #define NUM_B ...

  4. leetcode—sudoku solver

    1.题目描述 Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicate ...

  5. Chapter 7 Windows下pycaffe的使用之draw_net.py

    Chapter 6 中完成了在Windows下,对pycaffe的编译,如果编译存在问题,请参考:http://www.cnblogs.com/xiaopanlyu/p/6158902.html 本文 ...

  6. 三、 将DataTable 转换为List

    1. 方法public static IList<T> ConvertTo<T>(DataTable table) { if (table == null) { return ...

  7. Android NDK调试C++源码(转)

    [原创文章,转载请保留或注明出处,http://download.csdn.net/download/bigmaxim/5474055] 1. 相关软件 adt-bundle-windows-x86. ...

  8. PhysX

    [PhysX] 1.施加力: ))) { //施加一个力,X轴方向力度为1000,Y轴方向力度为1000 addFrceObj.rigidbody.AddForce (, , ); } ))) { / ...

  9. python svn

    svn 0.3.36 Downloads ↓ Intuitive Subversion wrapper. Introduction svn is a simple Subversion library ...

  10. iOS 中UIButton的 settitle 和 titlelabel的使用误区

    UIButton中设置Titl方法包括以下几种: - (void)setTitle:(NSString *)title forState:(UIControlState)state; - (void) ...