我的 Django 应用程序使用 Django 的标准 WSGIHandler 部署在 Apache 下的 mod_wsgi 中,通过 Django 端的表单登录对用户进行身份验证。所以对于 Apache,用户是匿名的。这会降低 Apache 访问日志的用处。
有没有办法在处理请求后通过 WSGI 包装器将用户名传回 Apache,以便它出现在 Apache 访问日志中?
(版本:Django 1.1.1、mod_wsgi 2.5、Apache 2.2.9)
最佳答案
只有在使用嵌入式模式并且使用名为 apswigpy 的单独包时才能这样做,它为原始 Apache 请求对象提供了 Python 绑定(bind)。 mod_wsgi 包提供了一种可选机制,允许原始 Apache 请求对象在 WSGI 环境中作为 Python CObject 引用传递。您将它与 apswigpy 结合使用,例如:
from apache.httpd import request_rec
r = request_rec(environ['apache.request_rec'])
r.user = user
至少我认为这将设置访问日志记录随后可以使用的适当信息。
你真的应该把这个讨论带到 mod_wsgi 邮件列表。
关于python - WSGI/Django : pass username back to Apache for access log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244244/