À quel point le serveur de test intégré de Django est-il dangereux lorsqu’il est exécuté à distance?

Concernant le serveur de débogage intégré démarré avec la commande manage.py runserver , l’état des documents Django, “NE PAS utiliser ce serveur dans un environnement ressemblant à un environnement de production.”

Si je voulais développer une application Django sur ssh sur une machine distante, l’utilisation de Nginx comme proxy sur un serveur de débogage Django en cours d’exécution serait-elle une chose raisonnable à faire? Le serveur de débogage Django n’est-il pas sécurisé ou n’est-il pas conçu pour gérer de grandes quantités de trafic?

De la documentation de Django :

N’UTILISEZ PAS CE SERVEUR DANS UN RÉGLAGE DE PRODUCTION. Il n’a pas été soumis à des audits de sécurité ou à des tests de performance. (Et c’est comme ça que ça va restr. Nous travaillons à la création de frameworks Web, pas de serveurs Web, donc l’amélioration de ce serveur pour pouvoir gérer un environnement de production ne relève pas de Django.)

Donc, cela répond aux deux dernières questions. En ce qui concerne le premier, cela dépend de la configuration de votre serveur de débogage. Si votre serveur est exposé à Internet, il ne possède pas de pare-feu bloquant le port 8000 et vous avez l’intention d’utiliser un runserver d’ runserver autre que l’adresse 127.0.0.1 par défaut.

Si vous utilisez nginx, pourquoi ne pas utiliser la configuration FastCGI suggérée pour que votre environnement de débogage soit plus proche de l’environnement de production futur?

Les serveurs Web modernes ont toutes sortes de fonctionnalités, liées à la sécurité et aux performances, que le serveur de développement Django ne possède pas. C’est un serveur mono-threaded, basique et dépouillé à des fins de développement. D’où la nécessité pour les docs de ne pas l’utiliser dans un environnement de production.

Cependant, les gens ont peur de cette déclaration. Le point clé est que c’est pour le développement . Qu’il s’agisse d’un développement sur votre machine locale ou sur un VPS distant ou sur un cluster entier.

Si le serveur est accessible au public, il sera ouvert au piratage, aux violations, aux attaques par déni de service, etc. Mais, s’il n’y a pas d’importance, juste un site de développement fonctionnant sur des données factices, peu importe. Donc, oui, vous pouvez utiliser le serveur de développement sur votre serveur distant à des fins de développement. Il n’y a rien de mal à cela. Ma seule précaution serait d’éviter d’utiliser des données de production (telles que l’utilisation d’un fichier de vidage de votre firebase database de production pour les développer) car ces données pourraient être compromises. Sinon, ce n’est pas grave.

Le serveur de débogage Django n’est-il pas sécurisé ou n’est-il pas conçu pour gérer de grandes quantités de trafic?

C’EST À LA FOIS UNE INSECURE ET PAS DESTINÉE AU TRAFIC LOURD!

Cela peut prendre en charge quelques-uns des problèmes en cachant le serveur de test derrière un proxy, mais si vous rencontrez beaucoup de problèmes, vous avez fait à peu près la même quantité de travail que vous devez le faire correctement… être WSGI. Utilisez mod_wsgi, gunicorn ou consultez cette page pour plus d’informations: http://bartek.im/blog/2012/07/08/simplicity-nginx-uwsgi-deployment.html . Quoi que vous fassiez … N’UTILISEZ PAS LE SERVEUR DE TEST DJANGO POUR LES ENVIRONNEMENTS DE PRODUCTION!