Ich habe nginx neu konfiguriert, kann es jedoch nicht mit der folgenden Konfiguration neu starten:
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;
}
}
Nach dem Ausführen sudo nginx -c conf -t
zum Testen der Konfiguration wird der folgende Fehler zurückgegeben. Ich kann nicht herausfinden, was wirklich das Problem ist
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
Beispiel gültige nginx.conf für Reverse Proxy; Für den Fall, dass jemand wie ich feststeckt
und Sie können es auch im Docker servieren
quelle
Der Pfad zu der
nginx.conf
Datei, die die primäre Konfigurationsdatei für Nginx ist - dies ist auch die Datei, die bei Bedarf den Pfad für andere Nginx-Konfigurationsdateien enthalten soll/etc/nginx/nginx.conf
.Sie können auf diese Datei zugreifen und sie bearbeiten, indem Sie sie am Terminal eingeben
cd /etc/nginx
/etc/nginx$ sudo nano nginx.conf
Weiter können Sie in diese Datei andere Dateien aufnehmen - die eine SERVER-Direktive als unabhängigen SERVER-BLOCK haben können -, die sich nicht in den HTTP- oder HTTPS-Blöcken befinden müssen, wie in der oben akzeptierten Antwort erläutert.
Ich wiederhole: Wenn Sie einen SERVER BLOCK benötigen, der in der PRIMARY Config-Datei selbst definiert werden soll, muss dieser SERVER BLOCK in einem umschließenden HTTP- oder HTTPS-Block in der
/etc/nginx/nginx.conf
Datei definiert werden, die die primäre Konfigurationsdatei für Nginx ist.Beachten Sie auch, dass es in Ordnung ist, wenn Sie definieren, dass ein SERVER-BLOCK ihn direkt nicht in einen HTTP- oder HTTPS-Block in einer Datei im Pfad einschließt
/etc/nginx/conf.d
. Damit dies funktioniert, müssen Sie den Pfad dieser Datei in die PRIMARY Config-Datei aufnehmen, wie unten dargestellt: -Darüber hinaus können Sie aus der PRIMARY Config-Datei die Zeile auskommentieren
und muss keine
/etc/nginx/sites-available/
Konfigurationsdateien behalten und muss auch nicht SYMBOLISCH verknüpft werden. Bitte/etc/nginx/sites-enabled/
beachten Sie, dass dies für mich funktioniert - falls jemand der Meinung ist, dass dies für ihn nicht der Fall ist oder diese Art der Konfiguration illegal ist usw. usw., hinterlassen Sie bitte einen Kommentar, damit Ich kann mich korrigieren - danke.BEARBEITEN: - Gemäß der neuesten Version des offiziellen Nginx-Kochbuchs müssen wir keine Konfigurationen innerhalb erstellen -
/etc/nginx/sites-enabled/
dies war die ältere Praxis und ist jetzt VERRINGERT.Somit ist die INCLUDE DIRECTIVE nicht erforderlich
include /etc/nginx/sites-available/some_file.conf;
.Zitat aus Nginx CookBook Seite - 5.
quelle
In einer von der Konfiguration importierten Datei befindet sich möglicherweise nur ein Tippfehler. Zum Beispiel habe ich einen Tippfehler tief in meiner Konfigurationsdatei gemacht:
(Ort anstelle von Ort), und dies verursacht den Fehler:
quelle