如何让 Apache 通过域名允许来自 localhost 的访问

如何让 Apache 通过域名允许来自 localhost 的访问

我有一个在 ubuntu 上运行的 redmine 服务器。我还在同一台服务器上托管一个 svn 存储库。

svn虚拟目录对每个用户都有授权限制,但我想允许redmine应用程序无需提供用户名即可访问它。

因此,我输入了:“允许来自 10.10.10.10”,这是服务器的外部 IP,并且它可以正常工作。

但我想把真实的主机名放在那里,而不是外部IP。

 
# dnsdpmainname
我的域名
# 主机名
我的服务器.我的域名.com
# ping 我的服务器
PING myserver.mydomain.com (10.10.10.10) ... 有效

但 ..

# ping myserver.mydomain.com
PING myserver.mydomain.com (127.0.1.1) ... 也可以,但是 IP 不同

我尝试在“允许来自”指令中同时使用 myserver 和 myserver.mydomain.com,但这些都不起作用。

我猜测问题在于 myserver 和 myserver.mydomain.com 解析为不同的 IP - 一个是外部 IP,一个是内部 IP。

知道如何修复此问题吗?我更愿意在 Allow 指令中使用主机名,而不是 IP 地址(理论上可能会更改)。

谢谢

答案1

127.0.0.1是所谓的环回地址,每个主机都有,并且不会改变。通常它具有关联的主机名localhost。此规则的唯一例外是当您使用 IPv6 时。::1除了 IPv4 地址之外,它定义的本地主机地址大多数情况下是。

您应该确保地址实际上是 127.0.0.1,而不是您声明的地址。虽然这也有效,但它会产生一些难以调试的问题。查看/etc/hosts配置这些映射的文件。提示:您永远不应该让实际的服务器名称指向127.0.0.1,而应该指向外部 IP。这会使运行和调试更加容易。

我个人通常会设置 Redmine/ChiliProject,使用与 localhost 绑定的特殊虚拟主机来提供未经身份验证的访问。另一种(可能更快)的替代方案是不使用http://Redmine 中的 URL,而是使用file://URL 并完全跳过 Web 服务器。

话虽如此,一旦正确设置了名称解析,您就可以在 Apache 配置中声明名称。但这要求反向名称解析确实有效,即系统能够将 IP 地址解析回名称。对于“/etc/hosts”中的条目和正确设置的 DNS 服务器来说,情况就是如此。

但是,如果你这样做,你就默认相信 DNS 系统不会欺骗你,但事实可能并非如此。通常,插入 IP 是更安全的选择。而且,只要有一点文档记录,这应该不会造成太大的伤害。公共服务器 IP 不会发生太大变化 :)

相关内容