为了账号安全,请及时绑定邮箱和手机立即绑定

使用docker compose服务时如何使两个虚拟主机指向同一个项目?

使用docker compose服务时如何使两个虚拟主机指向同一个项目?

PHP
梦里花落0921 2023-07-21 15:59:55
我有两个域共享相同的代码库和数据库。现在我需要两个域来连接到各自域的两个不同数据库。我正在使用 docker compose 在本地设置中提供服务。然后我转到浏览器并输入 localhost:2000 以查看我的项目是否已服务。我需要两个不同的域(例如 xyz.com 和 xyz.net)来指向同一个项目。谁可以帮我这个事?
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您需要解决访问时两个域都指向本地主机的问题。在/etc/hosts中添加:

127.0.0.1 xyz.com

127.0.0.1 xyz.net

现在,如果您在浏览器中访问 xyz.com 或 xyz.com,它将解析为您的本地计算机。


配置 apache vhosts 以指向 localhost:2000,如下所示:

<VirtualHost *:80>

        ServerName xyz.com

        ProxyPreserveHost On

        ProxyRequests off


        <Location />

                ProxyPass http://localhost:2000/

                ProxyPassReverse http://localhost:2000/

                Order allow,deny

                Allow from all

        </Location>

</VirtualHost>

第二个:


<VirtualHost *:80>

        ServerName xyz.net

        ProxyPreserveHost On

        ProxyRequests off


        <Location />

                ProxyPass http://localhost:2000/

                ProxyPassReverse http://localhost:2000/

                Order allow,deny

                Allow from all

        </Location>

</VirtualHost>

启用两个虚拟主机(sudo a2ensite [name].conf)并重新加载 apache。您还需要 proxy_http mod: sudo a2enmod proxy_http。现在两个 url 都指向您的 localhost:2000。


在您的 PHP 应用程序中检测域并基于该域连接到您需要的任何数据库。我使用了这个文件 g.php:

<?php


var_dump($_SERVER['HTTP_HOST']);

并在 localhost:2000 上用 php 的开发服务器提供它(您将在 docker 上使用它):


php -S localhost:2000 g.php 

PHP 7.0.33-0ubuntu0.16.04.15 Development Server started at Thu Jul  9 20:34:03 2020

Listening on http://localhost:2000

当我在浏览器中访问 xyz.net 时,我得到:string(7) "xyz.net" 当我在浏览器中访问 xyz.com 时,我得到:string(7) "xyz.com" 


查看完整回答
反对 回复 2023-07-21
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号