【发布时间】:2015-03-03 01:11:09
【问题描述】:
我的团队正在开发一个 REST API 来支持使用 Django 的 REST 框架的 iPhone 应用程序。现在是我们从通过开发 WSGI 接口托管切换到 mod_wsgi apache 接口的时候了。我们决定使用 mod_wsgi-httpd 作为 Apache 实例。
我们无法让 mod_wsgi 通过 HTTPS 托管。
我们在 django 应用程序设置文件 (settings.py) 中包含了 mod_wsgi
INSTALLED_APPS = (
'sslserver',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'mod_wsgi.server',
)
并且可以使用此命令成功启动 mod_wsgi 服务器:
python manage.py runmodwsgi --host 0.0.0.0 --port 8000 --https-port 8001 --ssl-certificate /path/to/cert/and/key
HTTP 服务器运行良好。我们所有的仅 HTTP API 方法都按预期进行侦听和响应。 HTTPS 端不配合。当尝试访问仅 HTTPS 的方法时,连接被拒绝。
例如,当尝试使用 Google Chrome 连接到该方法时...
https://ipaddress:8001/ldapauth/(ldapauth 是一种 HTTPS 方法)
Chrome 吐回来...
在客户端 Swift 中形成的类似请求也会被拒绝连接。
通常我认为这是一个更根本的问题,但是我们成功使用开发 WSGI sslserver(也在项目的 settings.py INSTALLED_APPS 中)让我认为这是 mod_wsgi 或 mod_wsgi-httpd 的问题。使用此命令,我们可以通过 SSL 托管我们的 API,并获得成功的请求/响应:
python manage.py 运行slserver 0.0.0.0:8001 --key /path/to/key --cert /path/to/cert
有什么我在配置 mod_wsgi 或 mod_wsgi-httpd 时可能遗漏的想法吗?非常感谢您的帮助,加油!
【问题讨论】:
标签: django apache ssl https mod-wsgi