Je suis nouveau sur NGINX et j'essaie d'installer un système de travail minimal. J'ai donc essayé de lancer aiohttp mini-app avec nginx et supervisor (par this example) Mais je ne peux pas configurer Nginx correctement et obtenir l'erreur suivante:
nginx: [emerg] "http" directive is not allowed here in /etc/nginx/sites-enabled/default:1
Voici le fichier complet default.conf:
http {
upstream aiohttp {
# Unix domain servers
server unix:/tmp/example_1.sock fail_timeout=0;
server unix:/tmp/example_2.sock fail_timeout=0;
server unix:/tmp/example_3.sock fail_timeout=0;
server unix:/tmp/example_4.sock fail_timeout=0;
}
server {
listen 80;
client_max_body_size 4G;
server example.com;
location / {
proxy_set_header Host $http_Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://aiohttp;
}
}
}
Cela semble correct. La directive server
est dans http
comme il se doit. Et http est directive parent. Qu'est-ce que je fais mal?
Je suppose que vous avez http
dans votre fichier /etc/nginx/nginx.conf qui indique ensuite à nginx de include sites-enabled/*;
Alors vous avez
http
http
server
Comme la directive http ne doit apparaître qu'une seule fois, supprimez-la simplement des fichiers de configuration de vos sites.
Vous pouvez insérer une partie qui devrait se trouver dans la section http{}
dans votre nginx.conf et dans /etc/nginx/sites-available/default
laisser uniquement la section server{}
.
Le problème se trouvait donc dans le deuxième mot clé server
. J'ai utilisé un exemple tiré de la documentation aiohttp et il semble qu'ils aient été mal typés avec "server example.com" au lieu de server_name example.com
.