不使用端口号从 LAN 访问 Apache 虚拟主机

不使用端口号从 LAN 访问 Apache 虚拟主机

据我所知,有两种方法可以访问没有静态 IP 地址的服务器(即我的笔记本电脑)上的 Apache 虚拟主机:

  • 在 Apache 配置文件中将主机名设置为 foo.localhost,并在 /etc/hosts 中将 fo.localhost 指定为 127.0.0.1。这样便于记忆,但不支持 LAN 上的客户端。

  • 监听不同的端口。这支持 LAN 上的客户端,但很难记住它们。

有没有办法将所有虚拟主机托管在端口 80 上,同时使其他设备可以访问它们?可能是将 127.0.0.1:80/foo/theactualurl 路由到 127.0.0.1:42908/theactualurl、将 127.0.0.1:80/bar/anotherurl 路由到 127.0.0.1:39539/anotherurl 的反向代理?

我正在运行 Ubuntu 12.04。

答案1

我自己也是个初学者,但我想到这个...尝试一下也无妨:)

只需将ServerName指令设置为foo.localhost并使用ProxyPass将其指向 LAN 地址。

就像是:

<VirtualHost *:80>
   ServerName foo.localhost
   DocumentRoot /var/www/foo  #doesn't matter because we're not going to hit it
   <Location />
      ProxyPass http://192.168.x.x/
      ProxyPassReverse http://192.168.x.x/
   </Location>
</VirtualHost>

然后你的其他内部网站可以像这样访问:

<VirtualHost *:80>
   ServerName foo2.localhost
   DocumentRoot /var/www/foo2  #again, doesn't matter
   <Location />
      ProxyPass http://192.168.x.y/
      ProxyPassReverse http://192.168.x.y/
   </Location>
</VirtualHost>

我承认,我不知道这是否有效,但对我来说这似乎是合理的;)

另外,您没有提到局域网上有多少台计算机,但如果只有几台,那么编辑文件也许/hosts就是解决方案。

答案2

将您的应用程序放在同一虚拟主机上的单独文件夹中对您来说不是一个选择吗?

另一个简单的解决方案是更改局域网客户端 PC 上的所有主机文件以添加:

YOUR_SERVER_IP  foo.com bar.com

但如果 IP 会因为 DHCP 而改变,那就不太方便了。

使用 Ubuntu 上的 avahi/zeroconf,PC 会将自己宣传为 HOSTNAME.local,因此您可以使用http://主机名.local访问您的本地网络服务器。也许可以使用 avahi 添加一些新别名。

相关内容