使用LAN上的不同计算机访问Apache虚拟主机(子域)

时间:2011-08-21 22:42:19

标签: apache virtualhost

我目前正在尝试配置Apache HTTP Server的虚拟主机(子域),以便可以使用LAN上的另一台计算机访问它。当前使用PHP和MySQL的Apache设置在同一物理机器上本地工作。

所以我在非默认端口50080上运行了两个虚拟主机设置(开发和cms)。服务器的机器的IP为10.0.0.10。在同一台物理机器上,我可以使用以下方法访问两个虚拟主机:

development.localhost:50080
cms.localhost:50080

从不同的物理机器,我可以使用以下方式访问服务器的根目录:

10.0.0.10:50080

但我不知道或不知道如何从不同的机器访问虚拟主机。我试过像:

development.10.0.0.10:50080
cms.10.0.0.10:50080

但它们似乎不起作用。

以下是我的httpd-vhosts文件的样子:

NameVirtualHost *:50080
<VirtualHost *:50080>
    DocumentRoot "C:/www/HTTP"
    ServerName localhost
</VirtualHost>

<VirtualHost *:50080>
    ServerAdmin administrator@development.localhost
    DocumentRoot "C:/www/HTTP/development"
    ServerName development.localhost
    ErrorLog "logs/development.localhost-error.log"
    CustomLog "logs/development.localhost-access.log" common
</VirtualHost>

我在这里和Apache论坛上阅读了其他一些帖子,但这并不是确切的情况。

我想知道如何从其他计算机访问虚拟主机(子域)并尽可能保留相同的端口。

提前致谢

5 个答案:

答案 0 :(得分:25)

好的,我明白了,如果其他人正在寻找这个配置,这是配置:

=============================================== ===================================

  

机器A(Apache HTTP Server):   的httpd的虚拟主机:

NameVirtualHost *:50080

<VirtualHost *:50080>
    DocumentRoot "C:/www/HTTP"
    ServerName localhost
    ServerAlias alias <!-- Added -->
</VirtualHost>

<VirtualHost *:50080>
    ServerAdmin administrator@development.localhost
    DocumentRoot "C:/www/HTTP/development"
    ServerName development.localhost
    ServerAlias development.phoenix <!-- Added -->
    ErrorLog "logs/development.localhost-error.log"
    CustomLog "logs/development.localhost-access.log" common
</VirtualHost>
  

主机:

127.0.0.1 development.localhost

127.0.0.1 alias
127.0.0.1 development.alias

=============================================== ===================================

  

机器B(来宾机):   主机:

10.0.0.10 alias
10.0.0.10 development.alias

从第二台机器,您应该可以使用“alias”和“development.alias”进行访问

答案 1 :(得分:3)

我建议进行以下更改(添加ServerAlias行):

NameVirtualHost *:50080
<VirtualHost *:50080>
    DocumentRoot "C:/www/HTTP"
    ServerName localhost
    ServerAlias cms.myserver.com
</VirtualHost>

<VirtualHost *:50080>
    ServerAdmin administrator@development.localhost
    DocumentRoot "C:/www/HTTP/development"
    ServerName development.localhost 
    ServerAlias development.myserver.com
    ErrorLog "logs/development.localhost-error.log"
    CustomLog "logs/development.localhost-access.log" common
</VirtualHost>

重启Apache以确保更改生效。

然后在您的第二台计算机上,您需要为这些新域名添加自定义DNS条目。如果是Windows,请编辑文件c:\windows\system32\drivers\etc\hosts。如果是Linux,请编辑/ etc / hosts。无论哪种方式添加:

10.0.0.10 development.myserver.com
10.0.0.10 cms.myserver.com

现在,您可以在第二台计算机上访问以下网址:

http://development.myserver.com:50080
http://cms.myserver.com:50080

答案 2 :(得分:2)

除非我遗漏了某些内容,否则您需要设置DNS条目,或者将条目添加到访问服务器的每台计算机的/ etc / hosts文件中。

localhost是默认情况下存在于每个人的/ etc / hosts文件中的条目,始终指向127.0.0.1。在不添加/ etc / hosts条目的情况下,developer.localhost不存在,并且在ip地址前加上子域名前缀根本不起作用。

答案 3 :(得分:1)

使用SSH + Putty隧道,因此在我的服务器上有一个127.0.0.1,我设法通过在我的服务器端执行以下操作来访问我的子域:

# nano /etc/hosts

127.0.0.1  localhost.localdomain localhost
127.0.0.1  sub1.domain.com sub2.domain.com sub3.domain.com sub4.domain.com

我没有更改远程计算机的主机文件,它就像一个魅力

答案 4 :(得分:0)

对于Named Virtual Hosts,您需要使用主机名或域名连接到您的apache服务器。它不适用于ips。

您可以在第二个系统的/etc/hosts中插入一个条目。