我的局域网上有几台机器。其中一台运行着两个网站,first_web_site 和 second_web_site(每个网站都在一个专用的 NameVirtualHost 中)。另一台机器运行着另一个网站 third_web_site。我希望能够通过以下网址在互联网上访问每台机器:
- 第一个网站.域名.tld
- 第二个网站.域名.tld
- 第三网站.域名.tld
知道两个站点位于同一台机器上。Apache 能帮我做到这一点吗?
我有一台机器,上面有一台 Apache 服务器,用于代理目的。我曾想在这台机器上设置虚拟主机并使用代理服务器,但我不知道该怎么做。
你能给我一些提示吗?非常感谢,Luc
答案1
在您的 apache conf.d 中创建或编辑 vhosts.conf(或根据操作系统的等效文件)。
使用 NameVirtualHost 指令来处理 DNS 名称。
NameVirtualHost *:80
然后定义每个虚拟主机。类似以下内容:
<VirtualHost *:80>
ServerName sub1.domain.com
ProxyRequests Off
ProxyPreserveHost On
# use the IP address or DNS or the server to forward to
# can include the port as well if necessary
ProxyPass / http://x.x.x.1/
ProxyPassReverse / http://x.x.x.1/
</VirtualHost>
<VirtualHost *:80>
ServerName sub2.domain.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://x.x.x.2/
ProxyPassReverse / http://x.x.x.2/
</VirtualHost>
对于同一台机器上的两个站点,这取决于它们的设置方式。如果它们位于不同的端口,请定义端口;如果它们是路径,则需要在 ProxyPass 和 ProxyPassReverse 条目的末尾添加路径:
http://x.x.x.1/app1
答案2
您可以在第一个盒子上设置代理,以连接并隧道传输到第二个盒子。这样第二个盒子就可以完成所有繁重的工作,而第一个盒子只需要资源来显示页面。