2

我很想知道在 Apache 或 lighttpd 或 nginx 等网络服务器上使用 HTTP Basic Auth 对性能有何影响。我想瓶颈是服务器实际读取文件以验证用户身份。在我看来,读取文件以验证用户的成本与该文件中的用户数量成正比。

我的问题是:
1.是否存在特定数量的用户,通过文件的基本身份验证开始急剧下降,还是与文件中的用户数量呈线性关系?
2. 鉴于 http 的无状态特性,如果用户已通过网络服务器对一个请求使用 HTTP Basic Auth 进行身份验证:
- 它是否只是在每个请求上转发凭据,并且网络服务器每次都必须解析密码文件以确定是否这是来自有效用户的请求?
或者
- 获得类似令牌的东西,它在后续请求的 http 标头中使用,允许服务器避免再次解析密码文件?

提前致谢

4

3 回答 3

3
  1. 线性相对。我不会担心的。HTTP Basic Auth 被证明是可扩展的。仅以 Twitter API 为例。它使用基本身份验证。

  2. “因为 HTTP 协议是无状态的,所以每个请求都将以相同的方式处理,即使它们来自同一个客户端。也就是说,从服务器请求的每个资源都必须重新提供身份验证凭据才能接收幸运的是,浏览器会处理此处的详细信息,因此您只需在每个浏览器会话中输入一次用户名和密码 - 也就是说,您可能需要在下次打开时再次输入浏览器并访问同一个网站。”

Apache Auth 文档中的详细信息。

于 2009-09-23T00:32:46.693 回答
1

我的经验仅限于 Apache 2.x。

  1. 是的。它将与默认身份验证提供程序(文件)成线性关系。它使用ap_cfg_getline(),因此它将与行数(用户)成线性关系。
  2. 是的。mod_aaa 每次都必须解析密码。您可以使用MemCookie 之类的东西进行基于 cookie 或令牌的身份验证。
于 2009-09-23T00:29:02.047 回答
0

在登录时解析文件一次应该可以很好地扩展,无论有多少用户。我真的不会担心。将来,您可以开发具有适当索引的数据库驱动方法。我怀疑您在开发网站时会遇到的所有瓶颈,Basic Auth 在很长一段时间内都不会成为其中之一——除非您的网络服务器功能严重不足。

于 2009-09-23T00:28:36.000 回答