So ändern Sie den Temp- und Log-Ordner von Nginx oder deaktivieren die Protokollierung vollständig

So ändern Sie den Temp- und Log-Ordner von Nginx oder deaktivieren die Protokollierung vollständig

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:

verwandte Informationen