让 mod_geoip 在 Apache 2.2.17 中与 mod_wsgi 一起使用
我想从以守护进程模式在 mod_wsgi 上运行的 Django 中访问 GEOIP_COUNTRY_CODE
环境变量。问题是,我可以从服务器上运行的 PHP 脚本中看到该变量,但它似乎没有通过 WSGI 传递到我的 Django 站点。 request.META.get('GEOIP_COUNTRY_CODE')
不起作用。 mod_wsgi 中是否有类似 WSGIPassAuthorization
的其他环境变量?
I'd like to access the GEOIP_COUNTRY_CODE
environment variable from within Django running on mod_wsgi in daemon mode. The problem is, I can see the variable from within PHP scripts running on the server but it seems that it is not passed through WSGI to my Django site.request.META.get('GEOIP_COUNTRY_CODE')
does not work.
Is there something like WSGIPassAuthorization
for additional environment variables in mod_wsgi?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果扩展模块将变量设置为环境变量,那么它将可以如下方式访问:
即,就像任何其他环境变量一样。
更新 1:
如果在 Apache 模块内部设置,例如 mod_geoip,则将其传输到 WSGI 应用程序领域的唯一方法是在 Apache 请求结构的 req.subprocess_env 中设置。即,与 Apache 使用 SetEnv 指令相同。在这种情况下,它应该出现在传递给 WSGI 应用程序的 WSGI 环境字典中。
要尝试验证是否发生这种情况,请使用
http: //code.google.com/p/modwsgi/wiki/DebuggingTechniques#Displaying_Request_Environment
If the variable is set by the extension module as an environment variable, then it will be accessible as:
Ie., just like any other environment variable.
UPDATE 1:
If set inside of an Apache module however such as mod_geoip, the only way it would be transfered into WSGI application realm is if it is set in req.subprocess_env of Apache request structure. Ie., the same as if SetEnv directive had been used with Apache. In that case it should appear in the WSGI environ dictionary passed to the WSGI application.
To try and validate whether this is occuring, using WSGI echo test script shown in:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Displaying_Request_Environment