我有一个在 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 不会发生太大变化 :)