对于每个开发站点,我希望有一个唯一的端口号。例如,domain.com:1234
这是我在 httpd.conf 文件中的内容。重新启动后,页面 domain.com:1234 未显示在浏览器中。除了我已经完成的操作外,我还需要做其他什么才能使其正常工作?
Listen *:1234
<VirtualHost *:1234>
DocumentRoot /var/www/dev_sites/test
ServerName domain.com
</VirtualHost>
看起来如果我转到我的本地主机名 (kk.local:1234),它会显示出来。我需要做某种 DNS 吗?我真的不想每次添加开发站点时都进入 godaddy。有办法解决这个问题吗?
答案1
将名称/地址映射添加到客户端hosts
文件应该可以解决开发场景中的名称解析问题。还可以选择设置通配符记录如果您的 DNS 提供商允许,则在 DNS 中。不过,一旦事情超出了开发人员的范围,我强烈建议为其设置适当的 DNS 解析。
答案2
ServerName 不应包含端口号。在您的示例中,只需为每个 VirtualHost 指定“domain.com”即可。在您的情况下,ServerName 指令不需要唯一,因为每个 VirtualHost 位于不同的端口上。您也不需要 NameVirtualHost,因为您正在按端口进行虚拟托管(尽管包含它并没有什么坏处)。
作为故障排除步骤,请确保 IPTables 已完全禁用(假设这是 Linux),并通过执行“iptables -L -n -v”进行验证;查看每个表是否为空。您还可以确保 SELinux 已禁用;请参阅发行版的文档以了解如何正确执行此操作,因为过程会有所不同。如果其中任何一个被证明是问题所在,您可以选择保持它们关闭,或正确配置它们以允许 Apache 监听这些端口。
以下是 Apache 2.2 文档中有关基于端口的虚拟主机的一个示例: http://httpd.apache.org/docs/2.2/vhosts/examples.html#ipport
答案3
是否有像 iptables 这样的防火墙阻止它?如果是这样,请将其关闭,或者更好的方法是添加一条规则以允许 1234 通过。
答案4
您的配置中是否有此指令:
NameVirtualHost *:1234
如果不这样做,您的 VirtualHost 将永远不会被使用。