c'est mon premier déploiement d'application web et je rencontre toutes sortes de problèmes.
Je suis actuellement en train de chercher une implémentation nginx + gunicorn pour l'application Django, mais surtout cette question concerne les configurations nginx. Pour certains contextes - nginx recevrait des connexions et un proxy vers le serveur local gunicorn.
dans les configurations nginx, où il est indiqué server_name
dois-je en fournir un? Je n'ai pas l'intention d'utiliser des noms de domaine d'aucune sorte, juste via l'IP externe de mon réseau (il est statique) et le numéro de port à écouter.
Mon désir est que lorsque j'accède à quelque chose comme http://xxx.xxx.xxx.xxx:9050
Je pourrais obtenir le site.
Voici l'exemple de code sur lequel je baserai les configurations pour référence.
server {
listen 80;
server_name WHAT TO PUT HERE?;
root /path/to/test/hello;
location /media/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location /admin/media/ {
# this changes depending on your python version
root /path/to/test/lib/python2.6/site-packages/Django/contrib;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_Host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
}
# what to serve if upstream is not available or crashes
error_page 500 502 503 504 /media/50x.html;
}
server_name
par défaut une chaîne vide, ce qui est bien; vous pouvez l'exclure complètement.
Une autre approche courante pour le besoin "Je ne veux pas donner de nom à cela" consiste à utiliser server_name _;
Votre http://xxx.xxx.xxx.xxx:9050
L'URL ne fonctionnera pas avec cette configuration, cependant; vous écoutez uniquement sur le port 80. Vous devez ajouter un listen 9050;
ainsi que.
nom du serveur _; n'est pas un caractère générique voir ici:
http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server
spécifiez simplement la directive default_server pour un accès IP uniquement (voir http://nginx.org/en/docs/http/request_processing.html )
server {
listen 1.2.3.4:80 default_server;
...
}
Si vous voulez que votre application réponde sur le port 9050 sans nom d'hôte spécifique, vous pouvez simplement ignorer nom_serveur, ce n'est pas obligatoire puisque Nginx résout d'abord l'entrée d'écoute puis le nom_serveur s'il est présent:
server {
listen 9050;
.....
}
Plus de détails ici: Nginx server_name et comment cela fonctionne