2013-02-02 7 views
1

Je cours Django sur une instance AWS EC2.Utilisation de https avec Django

Je reçois checkin POSTS de l'API Foursquare. Foursquare nécessite une adresse https pour envoyer le POST à ​​(mais le certificat ne doit pas être signé).

Comment puis-je utiliser HTTPS avec Django? J'ai l'impression que je vais avoir besoin d'un autre serveur, comme Apache. Si c'est le cas, je connais très peu d'Apache et trouve la plupart des réponses confuses.

J'ai seulement besoin du https pour ce cas. Quelle est la manière la plus facile d'accomplir ceci?

Répondre

2

Si Apache n'est pas requis, vous pouvez utiliser un autre serveur, par exemple NGINX. Il y a un tutoriel for getting NGINX running on an EC2 environment. La raison pour laquelle je suggère NGINX, c'est parce que ça a été plus performant (note: j'ai comparé avec ab mais ne me croyez pas sur parole). Une fois que NGINX est en cours d'exécution, vous pouvez le configurer pour utiliser SSL; voici the documentation to do so. La raison pour laquelle vous avez besoin de quelque chose comme NGINX est que python n'est pas le meilleur pour tous les types de requêtes (par exemple pour les fichiers médias/statiques). Vous pouvez également avoir besoin de NGINX pour transmettre la demande à un gestionnaire WSGI (par exemple uwsgi ou gunicorn). Vous pouvez read more about that here. Si le certificat SSL n'a pas à être signé, vous pouvez créer un certificat auto-signé, ici an example of tutorial où vous pouvez vous arrêter après l'étape qui crée le certificat (ou si vous voulez utiliser Apache, passez à tous les pas).

Quelques bons tutoriels:

EDIT: pour gérer à la fois http et 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/{ 
     ... 
    } 
} 
+0

Et où dois-je préciser que le port 443 doit être "transmis" à 80? Ou est-ce implicite. –