关于APACHE虚拟主机的问题

发表于:2007-06-09来源:作者:点击数: 标签:
我想在Solaris下建一虚拟主机。 例如:A.domain.com B.domain.com 均指向一个IP地址:12.34.56.78 我做了如下工作: 1,修改DNS,让A.domain.com与B.domain.com均指向12.34.56.78,成功。 2,修改Apache的配置文件httpd.conf,该文件当中有一块Section3是专

我想在Solaris下建一虚拟主机。
例如:A.domain.com
      B.domain.com
均指向一个IP地址:12.34.56.78

我做了如下工作:
1,修改DNS,让A.domain.com与B.domain.com均指向12.34.56.78,成功。
2,修改Apache的配置文件httpd.conf,该文件当中有一块Section 3是专门配置虚拟主机的,我添加了如下语句:
ServerName server.domain.com
NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78>
DocumentRoot "/apache/htdocs/A"
ServerName A.domain.com
ServerAdmin [email protected]
</VirtualHost>

<VirtualHost 12.34.56.78>
DocumentRoot "/apache/htdocs/B"
ServerName B.domain.com
ServerAdmin [email protected]
</VirtualHost>

然后重启HTTPD进程,发现在IE下A.domain.com与B.domain.com显示的页面一样。

我想问题可能出现在httpd.conf文件当中,Section 2: 'Main' server configuration当中,但我不知道该怎么做,试了很久,还是不行。若您知道该怎么做,请授金言,感激不尽!

 windowsnt 回复于:2002-10-28 09:29:27
看一下apache的日志

 sunspy 回复于:2002-10-28 09:43:41
虚拟主机的话 ,你的两个网站的页面 ,分别放在不同的目录下 ,什么方法可以区别呢?
是找那个 INDEX.HTML ,这点谁能说明一下 ?

要做虚拟主机 ,你在安装APACHE的时候 ,必须将虚拟主机的功能 ,在配置时加进去 ,不然 ,即使你用了SELECTION 2也没用 ,我只能帮你这一点了 。哈哈!

 burningsky 回复于:2002-10-28 12:56:50
谢谢
两个站点分别放到不同目录下,用DocumentRoot来区别。
Apache当中是什么模块来支持虚拟主机的?用什么命令来检查是否装了该模块呢?

 burningsky 回复于:2002-10-28 14:40:33
# ./usr/apache/bin/httpd -S
VirtualHost configuration:
12.34.56.78:80          is a NameVirtualHost
                       default server default.domain.com (/etc/apache/httpd.conf:921)
                       port 80 namevhost default.domain.com (/etc/apache/httpd.conf:921)
                       port 80 namevhost A.domain.com (/etc/apache/httpd.conf:926)
                       port 80 namevhost B.domain.com (/etc/apache/httpd.conf:931)

看来配置应该都没问题啊,可是http://A.domain.com与http://B.domain.com显示的页面就业default.doamin.com!
我几乎察看了本章所有的帖子,发现很多人曾经都遇到过我这样的问题,我试过其中一些方法,但还不不能解决问题。
我觉得这个问题有一定普遍性和代表性,忘斑竹能够写个精华帖子出来,以免后来者走弯路,谢谢!

 wweihhui 回复于:2002-10-28 14:45:49
好建议!

 burningsky 回复于:2002-10-28 14:57:14
我想是不是与DocumentRoot有关呢?
因为我感觉虚拟主机A.domain.com与B.domain.com都用的是default.domain.com的DocumentRoot,根本没用自己的DocumentRoot下面的index.html所以它们显示的页面均是default.domain.com的index.html。
在httpd.conf文件中有个“Section 2”,是对Apache最一些整体上的配置的,其中就有DocumentRoot,我设的目录就是default.domain.com的工作目录。是不是与这个有关呢?
我把这句话注释掉,那么就什么也看不到了。
我想问的是设置DocumentRoot时,有个整体的设置(Section 2)和虚拟主机自身的设置(Section 3),这两个DocumentRoot好像有种关系,不知道怎么解决!

求助啊!

 sunspy 回复于:2002-10-28 15:09:58
你可以将httpd.conf 中在末行键入 VIRTUALDOCUMENTROOT=/usr/www/%0 ,试一下


 burningsky 回复于:2002-10-28 18:41:44
感谢回复!!
VIRTUALDOCUMENTROOT=/usr/www/%0 中的/usr/www/%0代表什么?
我试试看……

 sunspy 回复于:2002-10-28 19:01:20
是通配符

 burningsky 回复于:2002-10-28 19:12:55
还是不行,绝望中……
# ./apachectl configtest
Syntax error on line 960 of /etc/apache/httpd.conf:
Invalid command 'VIRTUALDOCUMENTROOT=/apache/htdocs/%0', perhaps mis-spelled or defined by a module not included in the server configuration



 vipcui 回复于:2002-10-28 19:17:50
[这个贴子最后由vipcui在 2002/10/28 07:19pm 编辑]

下面是基于同一IP地址的多虚拟主机方案,配置完毕重新启动机器,兄弟您照猫画虎就可以了

<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot /quark/virtualhost/catv.com.cn
    ServerName mail.catv.com.cn
</VirtualHost>

<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot /quark/virtualhost/bcmc.com.cn^M
    ServerName mail.bcmc.com.cn
</VirtualHost>

<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot /quark/virtualhost/onl.com
    ServerName mail.onl.com
</VirtualHost>

<VirtualHost *>
    ServerAdmin [email protected]
    DocumentRoot /quark/webmail/htdocs
    ServerName mail.catv.com
</VirtualHost>

 burningsky 回复于:2002-10-28 19:24:15
谢谢vipcui的热情之手!
但是我觉得你给的配置和我写的配置起实质是一样的啊
NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78>
DocumentRoot "/apache/htdocs/A"
ServerName A.domain.com
ServerAdmin [email protected]
</VirtualHost>

<VirtualHost 12.34.56.78>
DocumentRoot "/apache/htdocs/B"
ServerName B.domain.com
ServerAdmin [email protected]
</VirtualHost>


 vipcui 回复于:2002-10-28 19:31:12
我知道,建议你用我的顺序写,你套用一下看看如何??

 burningsky 回复于:2002-10-28 19:49:09
兄弟,我按照你的顺序试了一把,还是不行~~~有点想哭~~~

我怀疑与DocumentRoot有关,因为在httpd.conf文件中有个“Section 2”是设整体的DocumentRoot的,Section 2里面的DocumentRoot设到哪个目录下,所有的虚拟主机就显示该目录下的WEB页面~~

我把“Section 2”中的“DocumentRoot”注释掉,那么Apache就根本用不了了。
有谁成功地做过,能不能把整个HTTPD.CONF文件发给我?!
感激~~~~~~~~~~

 段誉 回复于:2002-10-28 20:54:42
apache默认就支持虚拟主机的,你看过log了吗?贴出来!

 段誉 回复于:2002-10-28 21:11:15
你在每个section里面加上这句话,ErrorLog /var/log/domainA.com-error_log,然后看是否出现这个日志?没有的话,就到/var/apache/logs下去找系统的错误日志,贴出来分析!

 ydj 回复于:2002-10-28 21:21:51
在同一个IP地址下设置几个虚拟主机的话,最好用端口来区分,如一个用80端口,一个用81端口,这样才能区别虚拟主机,不然,会出现不同的域名,指向同一主页的现象。

 burningsky 回复于:2002-10-28 23:59:28
有大天使出马,呵呵,我看到一线曙光了……

不是我不贴LOG啊,我全都设了LOG,但是里面除了一些无关警告的东西外(很早以前的信息),几乎什么都没有。


 burningsky 回复于:2002-10-29 00:08:50
谢谢ydj。
我照ydj的说法设成不同的端口,如下
# ./httpd -S
VirtualHost configuration:
12.34.56.78:80          is a NameVirtualHost
                       default server default.domain.com (/etc/apache/httpd.conf:921)
                       port 80 namevhost default.domain.com (/etc/apache/httpd.conf:921)
12.34.56.78:81          A.domain.com(/etc/apache/httpd.conf:92
12.34.56.78:82          B.domain.com(/etc/apache/httpd.conf:935)

很遗憾,即使是不同的虚拟主机,不同端口,我在IE下浏览A.domain.com,B.domain.com,显示的内容还是default.domain.com的内容。
而http://12.34.56.78:81,与http://12.34.56.78:82却是该页无法显示。
我再查了一下LOG,还是什么都没有。

什么都没有,郁闷啊!

 burningsky 回复于:2002-10-29 00:13:58
到底与DNS有没有关系?

我是不是只要把A.domain.com,B.domain.com,default.domain.com都指向一个IP地址就行了?
我在DNS服务器上将A.domain.com,B.domain.com,default.domain.com均成功的添加了。

如果不是DNS的问题,我想肯定是“section 2”中那个整体设置DocumentRoot的问题了……
郁闷啊,疲惫阿!!!

 burningsky 回复于:2002-10-29 00:22:21
搞了近三天,还是没定……
疲惫阿,真想放弃

谁能再次伸出援助之手,感激~~

 sunmarmot 回复于:2002-10-29 01:56:09
坚持,再坚持................

 burningsky 回复于:2002-10-29 02:00:10
众多天使们,HELP ME,THANKS!!

 burningsky 回复于:2002-10-29 02:30:08
我把我的httpd.conf关键部分节选出来,我就不信,就这么几句话还搞不定~~
请大家赐金言,感激不尽!

### Section 1: Global Environment
ServerType standalone
ServerRoot /var/apache
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
...


### Section 2: 'Main' server configuration
Port 80
User nobody
Group nobody
ServerAdmin [email protected]

ServerName 12.34.56.78
DocumentRoot /apache/htdocs

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/apache/htdocs">
AuthType Basic 
AuthName "Restricted Files"
AuthUserFile /usr/local/apache2/passwd/password
AuthGroupFile /usr/local/apache2/passwd/group
require group netmanager 
    Options Indexes FollowSymLinks
   AllowOverride AuthConfig
</Directory>

UserDir public_htm
DirectoryIndex index.html
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
...
ErrorLog /var/apache/logs/error_log
...

### Section 3: Virtual Hosts

NameVirtualHost 12.34.56.78
<VirtualHost 12.34.56.78>
ServerAdmin [email protected]
DocumentRoot /apache/htdocs
ServerName default.domain.com
ErrorLog /var/apache/logs/default.domain.com-error_log
</VirtualHost>
#
<VirtualHost 12.34.56.78>
ServerAdmin [email protected]
DocumentRoot /apache/htdocs/A
ServerName A.domain.com
ErrorLog /var/apache/logs/A.domain.com-error_log
</VirtualHost>
#
<VirtualHost 12.34.56.78>
ServerAdmin [email protected]
DocumentRoot /apache/htdocs/B
ServerName B.domain.com
ErrorLog /var/apache/logs/B.domain.com-error_log
</VirtualHost>

 burningsky 回复于:2002-10-29 02:33:25
我觉得可能是
### Section 2: 'Main' server configuration
DocumentRoot /apache/htdocs

### Section 3: Virtual Hosts
NameVirtualHost 12.34.56.78
<VirtualHost 12.34.56.78>
ServerAdmin [email protected]
DocumentRoot /apache/htdocs/A
ServerName default.domain.com
ErrorLog /var/apache/logs/default.domain.com-error_log
</VirtualHost>
中的DocumentRoot的问题
Section 2中的DocumentRoot将Section 3中的DocumentRoot覆盖掉了?

但是又不能将Section 2中的DocumentRoot注释掉,不然Apache就用不了~~
头疼~

 burningsky 回复于:2002-10-29 09:13:14
somebody,somebody help me!

 坚持向左 回复于:2002-10-29 09:29:02
    我怀疑是域名解析的问题,看这Apache的配置没有问题啊

 burningsky 回复于:2002-10-29 09:37:37
谢谢老兄!
域名解析,我在DNS上/var/named上写了一个domain.com.zone的文件,文件里面将A.domain.com与B.domain.com均设为default.domain.com的CNAME;在/etc/named.conf下添加了domain.com这个域

用nslookup均能正确的正反向解析default.domain.com,A.domain.com与B.domain.com。
我想,只要能正确解析成一个IP就行了吧~~

 北极星 回复于:2002-10-29 09:49:33
[这个贴子最后由北极星在 2002/10/29 12:17pm 编辑]

[quote][b]下面引用由[u]ydj[/u]在 [i]2002/10/28 09:21pm[/i] 发表的内容:[/b]
在同一个IP地址下设置几个虚拟主机的话,最好用端口来区分,如一个用80端口,一个用81端口,这样才能区别虚拟主机,不然,会出现不同的域名,指向同一主页的现象。
[/quote]
用不同的端口的话,就没意义了吧,你装过win2000下的虚拟机吗,几十个上百个域名可以同时指向一个IP,一个端口,当你访问某个主页输入域名后,2000服务器会自动根据你设置的不同的主机头名而转向所需的网页!!

 burningsky 回复于:2002-10-29 09:54:29
谢谢~~~ydj只是让我试试,我试了,还是不行……所以我还是用同一个端口。
晕啊,晕啊~~(还没习惯)

 burningsky 回复于:2002-10-29 10:12:31
顶一顶~~

 burningsky 回复于:2002-10-29 11:51:58
不好意思,再顶一顶
如果搞定这个问题,我会写一篇很详细的精华文章,以免后来者走弯路。

 burningsky 回复于:2002-10-29 12:09:18
顶~~~SO SORRY~~~

 baiming 回复于:2002-10-29 12:24:26
[这个贴子最后由baiming在 2002/10/29 12:25pm 编辑]

如果你确信default.domain.com,A.domain.com与B.domain.com。都能ping通,并且都是只到了一个IP上你可以这样写试试<VirtualHost B.domain.com>
。。。</VirtualHost>
中间的那些别改,只把<VirtualHost 12.34.56.78>改成和servername一样的是name
我的apache 就是这样的。

 burningsky 回复于:2002-10-29 12:56:09
谢谢baiming,DNS设置肯定是没问题的,每个虚拟主机正反向解析都没问题。看到你的回复,我马上试了一把~~~
结果还是A.domain.com与B.domain.com显示的内容还是default.domain.com的内容

我真的怀疑
### Section 2: 'Main' server configuration
Port 80
User nobody
Group nobody
ServerAdmin [email protected]

ServerName 12.34.56.78
DocumentRoot /apache/htdocs

中的DocumentRoot有关,这是一个定义apache整体的DocumentRoot的语句,其实就是default.domain.com的工作目录,是不是就是它覆盖了其他虚拟主机的工作目录呢?所以让其他虚拟主机都显示default.domain.com的内容。
baiming,你可不可以看看你的httpd.conf文件当中这一部分是怎么设置的?谢谢!!


 
 

 burningsky 回复于:2002-10-29 13:16:29
顶~
(有点累)

 burningsky 回复于:2002-10-29 13:36:28
顶~~我心依旧~

 feng4321 回复于:2002-10-29 14:47:46
当你从地址栏输入域名时看到的是系统默认的界面么??
小弟第一次来这里,以前使用linux服务器做的时候碰到这样的情况,在linux下将httpd服务停掉。即可。reboot
solaris 没用过,支持一下,俺曾经也有这样的痛苦经历。多试试吧,往往是小的漏洞导致了整个服务无法运行。

 feng4321 回复于:2002-10-29 14:56:59
问题解决了么?哥们
上面的贴子有点问题,给与更正,我在linux现装的邮件服务器。使用qmail
当ntsysv启动httpd时,就出现不能正常解析的情况。如同您出现的问题。
所以我认为,是什么地方一起了冲突。你运行服务查看一下进程。看是否有相冲突的进程在运行。

 burningsky 回复于:2002-10-29 15:42:32
谢谢上面这位的大哥热心支持~
问题还没有解决,:~(
我已经reboot solaris N 次了
看到的界面是DocumnetRoot /apache/htdocs下面的index.html,几个虚拟主机看到的都是这个界面,所以我才怀疑与“section 2”下面的DocumentRoot有关。
我想一定是小问题,但是现在~几天了,还没解决。
痛苦中~~

 burningsky 回复于:2002-10-29 17:02:01
哭着喊着顶~~~~

 段誉 回复于:2002-10-29 17:05:20
在“section 1”中,这几个参数如何定义?
1、Listen ??
2、BindAddress ??
3、LoadModule vhost_alias_module /usr/apache/libexec/mod_vhost_alias.so的前面是否有注释?


 burningsky 回复于:2002-10-29 18:02:20
[这个贴子最后由burningsky在 2002/10/29 06:03pm 编辑]

又见大天使!!眼有点湿~~
分别是这样的:
#Listen 3000
#Listen 12.34.56.78:80

#BindAddress *

LoadModule vhost_alias_module /usr/apache/libexec/mod_vhost_alias.so

前面两个都注释掉了。
  

 burningsky 回复于:2002-10-29 23:21:49
哭着喊着顶~~~~ ~~~

 段誉 回复于:2002-10-30 09:32:50
你把Listen和BindAddress改成下面的形式:
Listen 12.34.56.78:80
BindAddress 12.34.56.78
重起apache之后,测试是否能够显示不同的界面。

 burningsky 回复于:2002-10-30 13:40:09
谢谢!照你所说的方法做了,但httpd进程就怎么也起不来了。
如下:
# ./apachectl configtest
Syntax OK
# ./httpd
# ps -ef|grep httpd
    root 16892 15855  0 13:24:06 pts/7    0:00 grep httpd
# ps -ef|grep httpd
    root 16894 15855  0 13:24:10 pts/7    0:00 grep httpd

 sunspy 回复于:2002-10-30 15:24:21
# ./apachectl start 或# ./apachectl restart

TYR THIS WAY

 burningsky 回复于:2002-10-30 15:44:55
我发现问题可能就出现在
Listen 12.34.56.78:80
BindAddress 12.34.56.78
上面。
因为我加上这两句话后,运行apache没报任何错,但就是查不到进程,任何页面都打不开。注释掉这两句话后每个虚拟主机又显示一样的页面~
这两句话有何用?

 burningsky 回复于:2002-10-30 15:48:26
谢谢sunspy,
./httpd
./apachectl start
./apachectl restart
效果好像是一样的。

 段誉 回复于:2002-10-30 16:15:53
去看我给你的短信,配置好了就贴出来,看看是哪里错了。

 burningsky 回复于:2002-10-30 16:28:34
搞定了!!
有点激动~~冷静下~~

 burningsky 回复于:2002-10-30 16:30:09
[这个贴子最后由burningsky在 2002/10/30 04:33pm 编辑]

我又验证了一把,是真的搞定了! 
            

 段誉 回复于:2002-10-30 16:40:48
那就贴出来你的心得。我想是我说的那种情况吧,BindAddress的问题,是吗?

 burningsky 回复于:2002-10-30 16:45:10
[这个贴子最后由burningsky在 2002/10/30 04:49pm 编辑]

不好意思,段誉,把你的短信贴出来

消息来自段誉,发送给您的时间:2002/10/30 04:06pm 
消息标题:Re:你好!
Listen这句话可以不用理会,它的作用是告诉Apache在哪个IP地址的哪个端口进行侦听,除非想要改变www的端口,否则不用变化。
BindAddress是专门的对虚拟主机进行绑定的一个参数,是指你的虚拟主机的每个域名绑定的IP地址,你看看是不是你的这个地址和你系统本身的IP地址不匹配。
当你的httpd启动不了的时候,你可以去/var/apache/logs下面找错误日志,就叫error_log或者看access_log里面是否有错误信息。
 
      

 段誉 回复于:2002-10-30 16:49:17
哦,这没什么问题,主要是你的问题出在哪里,这才是关键,:)

 burningsky 回复于:2002-10-30 17:13:36
[这个贴子最后由burningsky在 2002/10/30 05:27pm 编辑]

我准备过几天写个文档出来(这几天都比较忙)

多些段誉大哥的提醒,我想到可能与IP地址有关系,因为,我那台Apache服务器在局域网内,有防火墙。看了段誉老兄的短信,我立即看了一下IP地址:
# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.1.1.6 netmask ffffffc0 broadcast 10.1.1.63
        ether 8:0:20:e6:99:bc 
很明显,这里的IP地址是![color=#9932CC][size=6]10.1.1.6[/size][/color]。它的外部地址是![color=#9932CC][size=6]12.34.56.78[/size][/color]。我想可能与这有关系吧!

我试着将httpd.conf中[color=#00BFFF][size=6]所有的外部地址12.34.56.78全部改成内部地址10.1.1.6![/size][/color],然后./apachectl restart。再在浏览器上打开各虚拟主机的页面,结果OK!

我同事告诉我他在某处看到一篇文档,是关于apache的,里面有关于内部地址外部地址的设置,可能很多人都忽略了这个问题。等我找出来仔贴出来。
不知道这样的回复大家忙不满意?

[size=6]多谢段誉,sunspy,vipcui,baiming等人的热情帮助![/size]
[size=6][color=#DC143C]我会把这种精神传出去的![/color][/size]

            
            

 段誉 回复于:2002-10-30 17:23:04
:),我想提个问题,你这里说的外部地址和内部地址是什么意思?是你们用防火墙做的地址映射吗?

 burningsky 回复于:2002-10-30 17:26:32
是啊,是在路有器上作了个NAT转换,现在结果是内部网外部网都可以用default.domain.com,A.domain.com,B.domain.com访问各自的主页了,我也不知道为什么与这个有关系,我们的DNS也在内部网内,地址也是10.1.1.X,是不是与这个也有关系?

 段誉 回复于:2002-10-30 18:04:22
不是,你这种方式,不用理会NAT和外网的IP的,NAT会自动把你的内部IP地址转换成外部的(互相转换),因此,只要你内部的虚拟主机配置成功了就可以。
和DNS也没什么关系,虽然它定义的你的Web主机的IP是外部的,但是NAT会自动转换,访问你内部的地址。

 sunspy 回复于:2002-10-30 18:11:12
段誉看看我的问题 ,有点着急!

 段誉 回复于:2002-10-30 18:22:29
什么问题?

 burningsky 回复于:2002-10-30 20:17:55
对啊,那为什么在apache非得用内部地址才行?我也很奇怪~~
虽然解决了问题,但是还是很迷惑,应该有个说法的。
我找找相关文档看

 吹踢球 回复于:2002-11-04 09:33:09
当然要用内部地址啊。。。你的apache主机自己并不知道你的外部地址是谁啊。所以,你设置的外部地址的虚拟主机根本没起作用。当然只能看到default页面了。你的所有的配置都没有起作用啊。

 burningsky 回复于:2002-11-04 09:56:59
嗯,好像不够说服力……呵呵

 吹踢球 回复于:2002-11-04 15:23:18
burningsky,如果你是女孩就和你认识一下,呵呵...



 burningsky 回复于:2002-11-04 15:26:20
声明:我是男的,男的!

 吹踢球 回复于:2002-11-04 15:34:02
嗬嗬,看来我是想媳妇想的过分了。。。。
反正你设成外网地址肯定不对;你可以试试把所有原来使用外网地址的内容删除;再访问,我认为肯定也能正常工作,但显示的页面是default!!!因为你所有的设置根本没起作用。





 hss202 回复于:2003-04-28 14:15:30
[quote:944fee0fff="段誉"]你把Listen和BindAddress改成下面的形式:
Listen 12.34.56.78:80
BindAddress 12.34.56.78
重起apache之后,测试是否能够显示不同的界面。[/quote:944fee0fff]


我也的出现了差不多同样的问题。可我加了BindAddress *后就不行
红帽子7.3,我的是这样的,请各位高手看看
我这两天配置虚拟主机,发现在几个奇怪的问题?
1、如我要配置两个虚拟主机 www.b.com 和www.c.com
可在浏览www.a.com的时候却是访问到www.b.com首页的内容;
用a.com b.com c.com访问的全都是b.com首页的内容。
2、在访问www.a.com时可以支持PHP,可用a.com时却不可以;

httpd.conf文件
www.a.com是默认的域名
<VirtualHost 192.168.1.2> \\如把这个改为域名也会有同样的问题,有时
    DocumentRoot /home/b
    ServerName www.b.com
</VirtualHost>
<VirtualHost 192.168.1.2>
    DocumentRoot /home/c
    ServerName www.c.com
</VirtualHost>

如果我再这样加一个
<VirtualHost 192.168.1.2>
    DocumentRoot /home/a
    ServerName www.a.com
</VirtualHost>
加了之后
用a.com b.com c.com 访问的全都是a.com目录下的内容

<VirtualHost 192.168.1.2> \\如把这个IP改为域名也会有同样的问题
用a.com b.com c.com 访问可以看到目录的内容不是主页内容
甚至这样还不可以支持PHP
以上是我在配置APACHE虚拟主机的遇到的问题,其中可能有错,还请各位高手看看,是我的设置有问题还是什么问题?
请各位高手谈谈高见!!!

 cqwangji 回复于:2003-05-05 04:04:07
burningsky的问题解决了,先恭喜了,不过当时他的问题没说清楚环境,让大家走了弯路。事实上listen和BindAddress都不用理会的,只要最后的部分按下面的标准写就ok了。
NameVirtualHost 12.34.56.78
<VirtualHost 12.34.56.78>
        ServerName www.a.com
        DocumentRoot /home/a
</VirtualHost>
如果本机还有其他IP,可以接着写
NameVirtualHost 12.34.56.78
<VirtualHost 12.34.56.78>
        ServerName www.a.com
        DocumentRoot /home/a
</VirtualHost>
NameVirtualHost 12.34.56.79
<VirtualHost 12.34.56.79>
        ServerName www.b.com
        DocumentRoot /home/b
</VirtualHost>

 burningsky 回复于:2003-05-31 14:16:50
[quote:b437afdd8b="cqwangji"]burningsky的问题解决了,先恭喜了,不过当时他的问题没说清楚环境,让大家走了弯路。事实上listen和BindAddress都不用理会的,只要最后的部分按下面的标准写就ok了。
NameVirtualHost 12.34.56.78
<VirtualHos..........[/quote:b437afdd8b]     

你说的标准格式没错,我也相信每个能够上网的人都能够查到这样的标准。

可能我说得不够清楚,我实际上说的问题是个IP地址的问题,我觉得总结为一句话就是:如果你的主机有内部IP,通过PIX转化成外部IP,而你做apache虚拟服务器做不出来,建议你配置httpd.conf时用内部ip试试看。如此而已。

 shooray 回复于:2003-07-30 17:05:30
#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80
NameVirtualHost 192.168.0.213:80 #把这个打开就好了

我也是出这个问题,然后找到这个贴子

 mynetworm 回复于:2003-08-28 10:57:39
遇到同样的问题.苦~~~!

 lanxincao 回复于:2003-09-11 16:23:51
我有局域网中。OS为REDHAT 9,用它自带的apache 2.04。在配虚拟主机时出现同样的问题,就是不同域名访问同一页面。各位大侠看看这是怎么回事。我的配置如下:
NameVirtualHost 192.168.0.44:80
<VirtualHost 192.168.0.44>
     ServerName www.a.com
     DocumentRoot /var/tomcat4/webapps/ROOT/
     ServerAdmin [email protected]
     DirectoryIndex welcome.html index.jsp index.html main.html index.php  
</VirtualHost>     

<VirtualHost 192.168.0.44>
    ServerName www.b.com
    DocumentRoot /var/tomcat4/webapps/ROOT/ywq
    ServerAdmin [email protected]
    ErrorLog /etc/httpd/logs/ywq_log
    DirectoryIndex  index.jsp main.html index.php index.html 
</VirtualHost>

 cqfanli 回复于:2003-09-15 10:14:22
可能是你更改了之后,沒有重新啟動apache吧

 金玄 回复于:2003-10-28 14:22:04
把ServerName 中的域名地址大写改小写

原文转自:http://www.ltesting.net