我有一个网页.py使用python2.7社区购物车通过gevent运行在OpenShift上的应用程序。我想强制所有连接都通过https。有一个很好的关于OpenShift的教程可以用apache来实现,但是对于gevent呢?在
这是我的应用程序,它基本上是Python 2.7社区购物车中的默认版本:
#!/usr/bin/env python
import imp
import os
import sys
try:
zvirtenv = os.path.join(os.environ['OPENSHIFT_PYTHON_DIR'],
'virtenv', 'bin', 'activate_this.py')
execfile(zvirtenv, dict(__file__ = zvirtenv) )
except IOError:
pass
def run_gevent_server(app, ip, port=8080):
from gevent.pywsgi import WSGIServer
WSGIServer((ip, port), app).serve_forever()
def run_simple_httpd_server(app, ip, port=8080):
from wsgiref.simple_server import make_server
make_server(ip, port, app).serve_forever()
if __name__ == '__main__':
ip = os.environ['OPENSHIFT_PYTHON_IP']
port = int(os.environ['OPENSHIFT_PYTHON_PORT'])
zapp = imp.load_source('application', 'wsgi/application')
# Use gevent if we have it, otherwise run a simple httpd server.
print 'Starting WSGIServer on %s:%d ... ' % (ip, port)
try:
run_gevent_server(zapp.application, ip, port)
except:
print 'gevent probably not installed - using default simple server ...'
run_simple_httpd_server(zapp.application, ip, port)
我建议使用nginx终止对应用程序的SSL(https)连接和代理请求。下面是简单的nginx配置
这是我的一个服务器的分条版本(希望我没有删除任何必要的东西)。在
代理服务器的主要问题是错误的头,如
HOST
,REMOTE_ADDR
等等。但是这种配置,尤其是proxy_set_header
命令可以帮助大多数web框架确定谁是真正的发送者。在据我所知,gevent并没有为内置的WSGI服务器以及wsgiref的服务器提供SSL支持。在
如果您希望使用gevent,可以使用“gevent”选项查看uwsgi,但是您必须在应用程序副本本身。我相信rest配置与apache教程中的配置相同。在
PS:很可能uwsgi也支持SSL。在
相关问题 更多 >
编程相关推荐