htaccess 中的主机名有多贵?还有其他解决方案吗?

htaccess 中的主机名有多贵?还有其他解决方案吗?

为了轻松允许或禁止动态 IP 地址,您可以将其作为主机名添加到 .htaccess 文件中。

正如我所读到的: .htaccess 允许来自主机名吗?

它对连接的 IP 地址进行反向查找,查看响应是否与允许的名称匹配。

(嗯,实际上 Apache 正在进行双重查找,首先进行反向查找,然后对反向结果进行正向查找。)

这就是我们目前不在 .htaccess 中使用动态 IP 主机名的原因:这“听起来”很沉重:每个请求都需要额外进行 2 次查找。

  • 这确实很重吗,并且一个相当繁忙的服务器是否可以摆脱这种情况:)?(例如:这个“负载”与其他负载相比如何?如果请求比查找贵 1000 倍,那么它可能是微不足道的。另一方面,这可能是最后一根稻草:))
  • 还有其他解决方案吗?我可以编写一个脚本来查找主机名并将其放入 .htaccess 文件中,但这感觉有点像黑客攻击。

答案1

仅使用 .htaccess 本身就会影响性能。当 Apache 全局配置中的 AllowOverrides 以任何方式打开时,httpd 必须在每次请求时在 URI 的每个目录级别查找 .htaccess 文件,以防其中有需要读取的内容。这相当于大量额外的 lstat() 调用,这会增加延迟并增加服务器必须执行的工作量。也许您因为共享主机设置而不得不使用 .htaccess,但无论如何您都无法真正获得“高性能”…… ;)

撇开 DNS 不是最佳指标不谈,您禁止“动态” IP 地址的目的是什么?这更适合于应用程序防火墙 - 位于 Apache 服务器前面执行 IP 检查的东西,可能是通过检查黑名单,也可能是使用本地 DNS 解析器。

答案2

主机名的问题在于服务器进程在进行 DNS 查找时会挂起,因此速度越慢,对服务器的影响就越大。如果您发现内存中有更多的 apache 子进程没有问题,那么这不是什么大问题(在极端但不太可能的查找速度非常慢的情况下,您甚至可能会用尽 MaxClients 数量),但如果您的能力有限,请考虑使用脚本来更新 .htaccess 中的 IP 或类似的东西。

相关内容