【发布时间】:2013-02-24 07:06:26
【问题描述】:
我刚刚继承了一个在 Apache 2.4、mod_wsgi 3.4 和 Python 2.7 下运行的 Python 应用程序。同一个应用程序同时处理 HTTP 和 HTTPS 请求。
在现有代码中,它试图通过检查环境来确定请求是否为HTTPS:
if context.environ.get('HTTPS') not in ['on', '1']:
此检查失败,即使连接实际上是 HTTPS。在查看显示环境变量的扩展回溯时,我看到 HTTPS 实际上并不在从 Apache 传递的环境中。
所以我的问题是:
- 这是 Apache 配置问题吗?
- 此检查是否完全错误并且应该重写以检查其他内容?如果是,是什么?
- 或者我应该像我真正想做的那样放弃并用 nginx 替换 Apache?
【问题讨论】:
-
你确定python是compiled with support for SSL吗?
-
@sjdaws
hasattr(socket, "ssl")为我返回True。 -
Apache 代理是否总是传递给
http://backend而不是代理传递 SSL 连接到https://backend -
它根本没有使用代理,它使用
SetHandler wsgi-script。 -
检查这一点的规范方法是查看
wsgi.url_scheme环境变量。规范保证那个是存在的。
标签: python https apache2 mod-wsgi