Ich verwende Nginx 1.3.5 unter Windows 7. Ich muss Nginx direkt von einem schreibgeschützten Medium (CD oder DVD) ausführen. Wenn ich es jedoch ausführen möchte, tritt dieser Fehler auf:
nginx: [alert] could not open error log file: CreateFile() "logs/error.log" fail
ed (5: Access is denied)
2012/08/28 13:52:46 [emerg] 5604#2864: CreateDirectory() "J:\nginx-1.3.5/temp/client_body_temp" failed (5: Access is denied)
wobei J der Laufwerksbuchstabe meines CD-ROM-Laufwerks ist.
Ich habe nginx.conf geändert, um die Protokollierung vollständig zu deaktivieren, aber es scheint trotzdem zu versuchen, beim Start eine Datei mit dem Namen „error.log“ im Ordner „/logs“ und einige zusätzliche temporäre Inhalte im Ordner „/temp“ zu erstellen. Daher möchte ich den Verzeichnispfad „logs“ und „temp“ in den temporären Windows-Ordner (%temp%) ändern, habe aber keine Ahnung, wie ich das machen soll.
Außerdem möchte ich wissen, warum nginx nach dem Deaktivieren der Fehlerprotokollierung immer noch „logs/error.log“ erstellt?
Antwort1
http://nginx.org/en/docs/http/ngx_http_log_module.htmllistet die Anweisungen zur Steuerung der Protokollierung auf. Insbesondere gibt es die folgenden zwei:
syntax: access_log path [format [buffer=size]];
access_log off;
default: access_log logs/access.log combined;
context: http, server, location, if in location, limit_except
Und
syntax: error_log file | stderr [debug | info | notice | warn | error | crit | alert | emerg];
default: error_log logs/error.log error;
context: main, http, server, location
Sie können also das access_log vollständig deaktivieren, das scheint für das error_log jedoch nicht zu gelten. Sie können dennoch den gewünschten Effekt erzielen, indem Sie Ihrer Nginx-Konfiguration Folgendes hinzufügen:
error_log /dev/null emerg; #redirect the logging we can't shut off to a black hole;
acces_log off; #disable acces log
UPDATE: habe gerade den Windows-Tag bemerkt, siehediese Fragefür das Windows-Äquivalent /dev/null
Antwort2
soweit ich weiß, können Sie Zugriffsprotokolle deaktivieren, aber keine Fehlerprotokolle. Nginx versucht, Nachrichten in eine Protokolldatei zu erstellen/schreiben, die sich auf der CD/DVD befindet. Versuchen Sie, das Protokollverzeichnis auf die Festplattenpartition festzulegen, beispielsweise C: oder D: