我在 AWS EC2 实例上运行 Django。
我收到来自 Foursquare API 的签到帖子。Foursquare 需要一个 https 地址来将 POST 发送到(但不必对证书进行签名)。
如何让 HTTPS 与 Django 一起工作?我觉得我需要另一台服务器,比如 Apache。如果是这种情况,我对 Apache 知之甚少,并且发现大多数答案令人困惑。
对于这种情况,我只需要 https。实现这一目标的最简单方法是什么?
我在 AWS EC2 实例上运行 Django。
我收到来自 Foursquare API 的签到帖子。Foursquare 需要一个 https 地址来将 POST 发送到(但不必对证书进行签名)。
如何让 HTTPS 与 Django 一起工作?我觉得我需要另一台服务器,比如 Apache。如果是这种情况,我对 Apache 知之甚少,并且发现大多数答案令人困惑。
对于这种情况,我只需要 https。实现这一目标的最简单方法是什么?
如果不需要 Apache,那么您可以使用其他服务器,例如 NGINX。有一个让 NGINX 在 EC2 环境上运行的教程。我建议 NGINX 的原因是因为它的性能更好(注意:我确实比较过,ab
但不要相信我的话)。
运行 NGINX 后,您可以将其配置为使用 SSL;这是这样做的文档。您需要 NGINX 之类的东西的原因是,python 并不是最适合所有类型的请求(例如,对于媒体/静态文件)。您可能还需要 NGINX 将请求移交给 WSGI 处理程序(例如uwsgi
或gunicorn
)。您可以在此处阅读更多相关信息。
如果 SSL 证书不需要签名,您可以创建一个自签名证书,这里是一个教程示例,您可以在创建证书的步骤之后停止(或者如果您想使用 Apache,请继续执行所有步骤)。
一些不错的教程:
编辑:同时处理http
和https
:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
location / {
...
}
}