【问题标题】:Apache Virtual Host (Subdomain) access with different computer on LANApache 虚拟主机(子域)访问局域网上的不同计算机
【发布时间】:2011-10-31 18:45:41
【问题描述】:

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

所以我有两个虚拟主机设置(开发和 cms)在非默认端口 50080 上运行。服务器机器的 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 论坛,但没有确切的例子。

我想知道如何从另一台机器访问虚拟主机(子域)并尽可能保持相同的端口。

提前致谢

【问题讨论】:

    标签: apache virtualhost


    【解决方案1】:

    好的,我想通了,如果其他人在找这个,这里是配置:

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

    机器 A(Apache HTTP 服务器): httpd-vhost:

    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”访问

    【讨论】:

    • 非常感谢,这是一个很大的帮助!对于仍然遇到此问题的任何人的一些附注:上面写有“凤凰”的地方,我使用了别名并且它起作用了(不确定为什么在其他任何地方都使用了凤凰......)另外你可能需要创建在您通过网络看到您的网站之前,您正在使用的端口上的本地防火墙规则。我必须为端口 80 创建一个例外(我没有使用 50080)
    • 你也可以添加 mod_proxy 然后 ProxyPass /dev development.localhost 和 ProxyReversePass /dev development.localhost 然后使用 public-ip/dev
    • 是否可以在不编辑客户端主机文件的情况下做到这一点?
    【解决方案2】:

    我建议进行以下更改(添加 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
    

    现在在您的第二台计算机上,您应该能够访问以下 URL:

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

    【讨论】:

    • 我在尝试使用您提供的配置启动 Apache 时似乎遇到了错误...
    • 我在尝试启动 Apache 时遇到错误,因此它似乎与 httpd-vhosts 文件的配置有关。顺便说一句,第一个 条目指向目录的根目录,我没有添加“cms”条目,因为我认为它与“development”条目相同
    【解决方案3】:

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

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

    【讨论】:

    • 我在Apache机器上的hosts文件有条目:127.0.0.1 development.localhost 第二台机器还没有,我应该添加什么?
    【解决方案4】:

    使用 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
    

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • 我在Apache机器上的hosts文件有条目:127.0.0.1 development.localhost 第二台机器还没有,我应该添加什么?
      • &lt;ip of development server&gt; development.server 例如,然后将 ServerAlias development.server 添加到您的 apache 配置中。
      猜你喜欢
      • 2021-02-16
      • 2017-01-02
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2015-05-27
      • 2011-10-18
      • 2012-08-04
      相关资源
      最近更新 更多