jony413

多媒体信息发布、排队叫号、医院分诊、电子班牌

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

客户端请求的URL格式为:http://DNS:Port/......
经过很多中间过程,当该URL请求发送到Apache服务器时,Apache将转换为具体的“本机”路径。这是Apache的第一个基本功能:地址变换。
对于URL而言,每个必须指定 DNS+Port。
而对于Apache而言,内部通过<VirtualHost>其实又为每个DNS+Port组合对应了一个“本机”目录。

<VirtualHost *:8087>                                          <IP : 端口>
    ServerAdmin         webmaster@G2.home
    DocumentRoot     "F:/Apache/docs"                         <本机路径>
    ServerName          G2.home                               <DNS>
    ServerAlias           www.G2.home
</VirtualHost>

将会形成如下对应数据表:
     IP            Port    DNS    本机路径      
A    192.168.0.1    80     W1     /D1      
B    192.168.0.2    8087   W2     /D2      
C    192.168.0.1    8087   Wx     /Dx      
D    192.168.0.1    80     Wy     /Dy     
这里有几点要注意:
1)如果没有指定port,那么表示缺省的80。无论是请求的URL还是<VirtualHost>中指定的值。
2)如果<VirtualHost>指定 *,那么查询时,对IP而言是匹配,对port而言则为80。
3)IP的用处主要是为了多IP的情况。
那么,查询该表即可知道URL对应的实际地址,存在如下三种情况:
1)如果通过IP可以识别最好;这就是多IP方案;
2)不行的话基本上通过一个IP+Port就可以知道URL;这就是单IP多端口方案;
3)如果IP+Port还存在重复的可能,那就就要结合DNS来使用;这就是虚拟主机名方案。  

最浪费方式 - 多IP方式
一个Apache服务器可以对应多个IP,通过多个网卡或者一个网卡添加多个IP地址来实现。这样为每个域名对应一个IP即可。Eg:

<VirtualHost 192.168.0.1>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S1

ServerName s1.com

</VirtualHost>

<VirtualHost 192.168.0.2>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S2

ServerName s2.com

</VirtualHost>

IP多,Server配置多,Client访问简单,不需端口。

每个域名就是一个独立的IP+port,可以直接找到本机文件路径

可通过IP访问,域名随便填写,但是必须要有:

http://192.168.0.1/

http://192.168.0.2/

或通过域名访问,此时还是在Dsn服务器端将域名解析添加进来。局域网内部还可以通过机器名

http://s1.com/

http://s2.com/

eg:A+B

                                                                                                                
最节省方式:一个IP多个端口
 

增加监听:

Listen 80

Listen 81

<VirtualHost*>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S1

ServerName s1

</VirtualHost>

<VirtualHost*:81>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S2

ServerName s2

</VirtualHost>

Server简单一个IP;Client略显臃肿,需要在Url后面添加端口

每个域名是同一个IP的不同port,也可以直接找到本机文件路径。但是一定要利用listen使用指令来对用到的端口进行监听

如果当前IP为:192.168.01,最后通过如下访问:

http://192.168.0.1/

http://192.168.0.1:81/

eg:A+C


最优惠方式:同一IP多个域名

同一IP可能存在多个

NameVirtualHost*

<VirtualHost*>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S1

ServerName s1.com

</VirtualHost>

<VirtualHost*>

ServerAdmin xxx@xxx.com

DocumentRoot D:/S2

ServerName s2.com

</VirtualHost>

访问最简单,服务器配置最简单,域名即可

多个域名对应同一个IP和端口,存在冲突;此时必须用NameVirtualHost指令,对指定IP再根据域名来进行二级识别

如果当前IP为:192.168.01

最后通过如下访问:

http://s1.com/

http://s2.com/

eg:A+D


注意:上述只是简单的示意了站点,真正每个站点要发布,还要处理很多目录的访问权限。有时必须访问权限指定后才能进行访问。

posted on 2015-03-23 17:03  jony413  阅读(361)  评论(0)    收藏  举报