J'ai reconfiguré nginx mais je ne peux pas le redémarrer en utilisant la configuration suivante:
conf:
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /robots.txt {
alias /path/to/robots.txt;
access_log off;
log_not_found off;
}
location = /favicon.ico { access_log off; log_not_found off; }
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_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_pass http://127.0.0.1:8000;
}
location /static {
expires 1M;
alias /path/to/staticfiles;
}
}
après avoir exécuté sudo nginx -c conf -t
pour tester la configuration, l'erreur suivante est renvoyée, je ne peux pas comprendre quel est vraiment le problème
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/config:1
nginx: configuration file /etc/nginx/sites-available/config test failed
Exemple de nginx.conf valide pour le proxy inverse; Au cas où quelqu'un serait coincé comme moi
et vous pouvez aussi le servir dans docker
la source
Le chemin d'accès au
nginx.conf
fichier qui est le fichier de configuration principal pour Nginx - qui est également le fichier qui doit INCLURE le chemin pour les autres fichiers de configuration Nginx en cas de besoin/etc/nginx/nginx.conf
.Vous pouvez accéder et modifier ce fichier en le tapant sur le terminal
cd /etc/nginx
/etc/nginx$ sudo nano nginx.conf
Plus loin dans ce fichier, vous pouvez inclure d'autres fichiers - qui peuvent avoir une directive SERVER en tant que BLOC SERVEUR indépendant - qui n'ont pas besoin d'être dans les blocs HTTP ou HTTPS, comme cela est clarifié dans la réponse acceptée ci-dessus.
Je le répète - si vous avez besoin d'un BLOC SERVEUR à définir dans le fichier de configuration PRIMAIRE lui-même, ce BLOC SERVEUR devra être défini dans un bloc HTTP ou HTTPS englobant dans le
/etc/nginx/nginx.conf
fichier qui est le fichier de configuration principal pour Nginx.Notez également -c'est OK si vous définissez, un BLOC SERVEUR ne l'enfermant pas directement dans un bloc HTTP ou HTTPS, dans un fichier situé au chemin
/etc/nginx/conf.d
. Aussi pour faire ce travail, vous devrez inclure le chemin de ce fichier dans le fichier PRIMARY Config comme indiqué ci-dessous: -De plus, vous pouvez commenter à partir du fichier PRIMARY Config, la ligne
et n'a pas besoin de conserver de fichiers de configuration
/etc/nginx/sites-available/
et pas besoin de les lier symboliquement/etc/nginx/sites-enabled/
, veuillez noter que cela fonctionne pour moi - au cas où quelqu'un pense que ce n'est pas le cas pour eux ou que ce type de configuration est illégal, etc., veuillez laisser un commentaire pour que je peux me corriger - merci.EDIT: - Selon la dernière version du livre de recettes officiel Nginx, nous n'avons pas besoin de créer de configuration à l'intérieur -
/etc/nginx/sites-enabled/
, c'était la pratique la plus ancienne et est maintenant DÉPRECIEE.Ainsi, pas besoin de la DIRECTIVE INCLURE
include /etc/nginx/sites-available/some_file.conf;
.Citation de la page du livre de recettes Nginx - 5.
la source
Il peut y avoir juste une faute de frappe n'importe où dans un fichier importé par la configuration. Par exemple, j'ai fait une faute de frappe au fond de mon fichier de configuration:
(emplacement au lieu de l'emplacement), et cela provoque l'erreur:
la source