我正在努力
http://www.mysite.com 和 http://test.mysite.com
在生产网络服务器上运行,现在我在本地机器上进行一些基本测试,然后在生产网络服务器上传输数据。
如果可能的话,我只想使用 apache 的虚拟主机和 /etc/hosts。
我在 virtualHost 中使用 apache 的 ServerAlias 指令,例如:
<VirtualHost *:80>
DocumentRoot /path/to/mysite
ServerName www.mysite.fr
ServerAlias *.mysite.com
<Directory /path/to/mysite>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
然后在 /etc/hosts 中输入我想要的域名:
127.0.0.1 www.mysite.com
127.0.0.1 test.mysite.com
当我在本地测试它时,它有效!(我可以访问 www.mysite.com 和 test.mysite.com)当我在远程网络服务器上测试它时,它确实忽略了我的设置,并且只有默认的 www.mysite.com 可用。
我错过了什么?或者我的问题应该是,是否可以使用虚拟主机和 /etc/hosts 文件在 Web 服务器上访问两个 URL(www 和 test)?
答案1
您如何尝试访问 test.mysite.com?
为了使其在 Internet 上运行,您需要在托管您的 DNS 的任何服务器/服务上为 test.mysite.com 添加 DNS A 记录,或者在您的 /etc/hosts 文件中添加远程服务器的公共 IP 记录。
/etc/hosts 仅适用于本地机器。
在您的本地设置中,在 /etc/hosts 中:
[YOUR REMOTE SERVER'S PUBLIC IP] www.mysite.com test.mysite.com
但是,这只对您(或您手动将记录添加到正确的主机文件的任何系统)有效,直到您为远程服务器的公共 IP 为 test.mysite.com 添加 DNS A 记录。
答案2
是的,只要满足以下条件,您描述的配置就是可能的:
- 在具有 Web 浏览器的系统上托管文件(或大多数情况下为 DNS)
- Web 服务器上相应的虚拟主机配置
答案3
这也许能对你的困境有所帮助。
如果您想要使用静态 IP 为多个域提供服务,则需要多个接口。除非您使用虚拟接口。
< 免责声明:这仅是示例。使用时请自负风险。>
打开:/etc/network/interfaces
auto eth0
iface eth0 inet dhcp
auto eth0:1
iface eth0:1 inet static
address 192.168.0.2
network 192.168.0.0
netmask 255.255.255.0
#if you don't have a gateway setup, comment "gateway" line
gateway 192.168.0.1
broadcast 192.168.0.255
auto eth0:2
iface eth0:2 inet static
address 192.168.0.3
network 192.168.0.0
netmask 255.255.255.0
#if you don't have a gateway setup, comment "gateway" line
gateway 192.168.0.1
broadcast 192.168.0.255
然后:
去:/etc/hosts
192.168.0.2 www.mysite.com
192.168.0.3 test.mysite.com
如果您设置了 DNS,那么您可以使用相同的 IP 来映射您的系统。希望这能有所帮助。如果信息不是最清楚的,请联系我。请记住使用不同的 IP 和域名;不要重复使用 IP 地址。不要重复使用域名(昵称)。根据 ,这是唯一的匹配项/etc/hosts
。