我有2个“假设”域名。 myname.me和myproduct.co.nz。我有四台服务器连接到我的公共IP地址的端口44,45,80和90.
域名的A记录都设置为我的ip,所以myname.me:44和myproduct.co.nz:44会显示相同的页面。
我想要的是,myname.me的访问者可以看到服务器端口90上运行的页面,但不能让他们在地址栏中看到“:90”。
我还希望访问a.myproduct.co.nz的访问者看到在端口44上运行的服务器上的页面,以及访问b.myproduct.co.nz的访问者以查看在端口45上运行的服务器上的页面没有看到:44或:45(例如,我希望页面全部服务于80)。
服务器都是带有php的apache2。
我想这会与http://httpd.apache.org/docs/2.2/vhosts/name-based.html有关,但我不确定它如何与2台服务器配合使用。
我真的很感激任何帮助。 〜JJ56
答案 0 :(得分:2)
在“port-80计算机”上设置name-virtual-hosts。然后在每个虚拟主机定义中使用ProxyPass(来自mod_proxy),将请求从“端口80机器”传递到防火墙后面的其他机器。
它可能类似于以下内容:
(注意:主服务器(您的“端口80服务器”)必须能够访问内部网络上的其他服务器 - 我使用过数字地址(192.168.1.5和192.168.1.6))。
<VirtualHost *:80>
DocumentRoot /var/www/myname.me/public_html
ServerName myname.me
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.6/
ProxyPassReverse / http://192.168.1.6/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/myproduct.co.nz/public_html
ServerName myproduct.co.nz
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.5/
ProxyPassReverse / http://192.168.1.5/
</VirtualHost>
首先在没有代理相关内容的情况下设置虚拟主机。确保您可以在两个虚拟主机中的每个虚拟主机中成功解析测试页面。 然后(并且只有这样)添加代理内容,然后开始解决问题。
答案 1 :(得分:0)
虽然我想回答您的问题,但我必须要求为什么您希望以这种方式配置服务器。您真正想要做的是在此共享IP地址上配置多个域(或Name Based Virtual Hosts
)。
如果是这种情况,那么在Apache中设置非常简单。每个域都需要在httpd.conf或vhosts.conf中定义(或者在catch-all include目录中定义,具体取决于您的安装;请参阅您的文档)。一个非常基本的设置如下所示:
<VirtualHost *:80>
DocumentRoot /var/www/mywordpressblog.co.uk/public_html
ServerName www.mywordpressblog.co.uk
</VirtualHost>
祝你好运。
答案 2 :(得分:0)
您在端口80上运行一台服务器并使用基于名称的虚拟主机,并且您不与任何其他公共端口一起玩任何游戏。如果您需要不同的域来命中不同的物理服务器,您可以设置mod_proxy来代理对这些服务器的请求,或者在端口80上设置squid或varnish来执行相同的操作。 PHP根本没有进入它。