【问题标题】:Serving virtual hosts with ip only仅使用 ip 服务虚拟主机
【发布时间】:2018-04-12 09:32:48
【问题描述】:

我在本地设置了一个服务器,我希望能够在不指定域的情况下访问它服务器的站点。如果您需要知道为什么滚动到底部。

通过这样配置虚拟主机,我设法使用 IP 为 ONE 站点提供服务:

ServerName 192.168.2.10
DocumentRoot /var/www/site1/public

这很好用,我的服务器仍然可以继续以基于域的方式运行,通过相应的虚拟主机为所有其余站点提供服务。问题是,我不确定如何在不使用域的情况下通过 IP 为多个站点提供服务。

  • 也许我可以使用不同的端口?
  • 也许我可以用 .htaccess 和 mod_rewrite 做一些我没有想到的事情?

如果有人能在这里列出我的选择,我将不胜感激。感谢您抽出宝贵时间。


我为什么要这样做?
首先,我很好奇它是否真的可以完成。具体来说,如前所述,我在本地为站点提供服务,而下载该应用程序的客户端只有在实际存在于该本地网络时才能访问它。尽管我可以为它们中的每一个配置主机文件,但这听起来很乏味并且在实践中是不可行的,尤其是因为它们中的许多是移动设备并且过程相当漫长。

【问题讨论】:

  • DNS 的发明是为了让事情变得简单,您可以定义多个虚拟主机链接到具有不同端口的相同 IP 地址或托管在具有相同端口的同一台机器上的不同 IP 地址的虚拟机。我还遇到过基于部分 URL 重定向流量的负载均衡器,例如www.example.com/siteA 或 www.example.com/siteB。所以我确信可以做到,但不确定 Apache 的方式。

标签: apache .htaccess mod-rewrite virtualhost


【解决方案1】:

您必须为 Apache 提供一种方法来区分您的不同站点。你可以这样做:

  1. DNS,域名。这需要使用 ServerName 值设置 VirtualHost 配置以匹配每个域。但您不希望这样,请继续阅读。

  2. IP 地址。您的服务器上可以有多个地址,并让 Apache 监听每个地址。前任。听 1.1.1.1:80 和听 2.2.2.2:80。然后将每个 VirtualHost 配置为服务一个地址。

  3. 端口。如果你只能有一个IP地址,你可以用端口拆分站点。在这种情况下,您将聆听 1.1.1.1:80 和聆听 1.1.1.1:81。然后当您的客户访问这些站点时,他们会使用http://1.1.1.1:80http://1.1.1.1:81

其他建议,

  • 在您的机器上,您需要设置您的 IP,在防火墙上打开您的地址和端口,根据需要设置路由,...
  • 为每个 VirtualHost 设置单独的日志文件,这将有助于解决很多调试问题。
  • 除非内容相同,否则为您的 DocumentRoot 为每个 VirtualHost 设置一个目录。

【讨论】:

  • 谢谢。与此同时,我发现需要访问 ports.conf 以使服务器侦听额外的端口。我最终遵循了端口方法。如果您可以将其添加到 3. 中,那么对于将来可能对此感兴趣的任何人来说,它都会膨胀。
猜你喜欢
  • 2018-05-04
  • 2012-09-25
  • 2021-08-20
  • 2020-04-14
  • 2014-07-06
  • 1970-01-01
  • 2019-02-08
  • 2021-10-26
  • 2015-08-27
相关资源
最近更新 更多