我刚刚继承了一个在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传递的环境中。
所以我的问题是:
答案 0 :(得分:3)
Apache mod_ssl
可以配置为设置HTTPS
环境变量,但doesn't do so by default出于性能原因。
您可以明确启用它,但由于您使用的是WSGI应用程序,因此检查wsgi.url_scheme
环境变量可能更好。 WSGI规范保证了它的存在,如果你最终转移到nginx,它不会要求对你的应用程序进行任何进一步的更改。
答案 1 :(得分:0)
当使用CGI,WSGI或SSI时,您需要建议Apache发送HTTPS
标题,否则它将是空的。您可以使用配置中的mod_env或.htaccess
<IfModule mod_env.c>
SetEnv HTTPS on
</IfModule>