Überschreiben Sie die Standard-http-Konfiguration von nginx, ohne die Standard-Datei nginx.conf zu ändern

14

Meine Absicht : Ich möchte die in /etc/nginx/nginx.conf(in debian 8) definierte Standardkonfiguration überschreiben . Die Idee ist, diese Datei vollständig unangetastet zu lassen, um zukünftige Systemaktualisierungen zu vereinfachen und die neuesten Änderungen für die Optionen zu erhalten, die ich nicht überschrieben habe.

Was ich getan habe : Ich habe eine benutzerdefinierte Konfiguration auf /etc/nginx/conf.d/die gleiche Weise erstellt wie für mehrere andere Debian-Dienste.

Problem : Es scheint jedoch unmöglich zu sein, eine Konfiguration zu überschreiben, da ich eine "X" -Direktive erhalte, die ein doppelter Fehler ist. Nginx scheint das Überschreiben der Konfiguration nicht so zu unterstützen wie andere Dienste.

Frage : Gibt es eine Möglichkeit, den nginx- http- Kontext zu überschreiben und eine neue Option hinzuzufügen, ohne dass die Direktive ein doppelter Fehler ist? Oder sollte ich die Idee komplett aufgeben und die randalieren nginx.conf?

Vielen Dank für deine Hilfe.

Diese ähnliche Frage löst mein Problem nicht wirklich, da ich auch von den für mich automatisch eingestellten Standardoptionen nginx profitieren möchte (zB worker_processes auto;)

Gui-Don
quelle
1
Sind Sie wirklich auf Debian eingestellt? Ihre Nginx-Konfiguration unterscheidet sich erheblich von der Upstream-Konfiguration, und dies ist möglicherweise nicht möglich.
Michael Hampton
Ja. Ich habe bereits mehrere Produktionsserver unter Debian und hier geht es nur darum, Apache2 auf Nginx umzustellen. Also, was Sie mir sagen, ist, dass in anderen Distributionen das, was ich versucht habe, möglicherweise funktioniert? Gibt es eine Chance, dass es in Zukunft mit Debian funktionieren wird?
Gui-Don
Es ist sicher möglich, dass Debian in Zukunft eine vernünftigere Nginx-Konfiguration ausliefert. Sie können auch einfach Ihre eigenen erstellen.
Michael Hampton

Antworten:

2

Oder sollte ich die Idee komplett aufgeben und die nginx.conf ramponieren?

Ja du solltest.

Die einzigen Änderungen, die jemals von Paketbetreuern vorgenommen wurden, sind entweder

  • vernünftigere Voreinstellungen für Parameter sollten Sie sich ohnehin schon vor langer Zeit vorgenommen haben
  • #- Vorgefertigte Beispiele, die ohne Ihre Aktion sowieso nicht verwendet würden

In der Vergangenheit waren die einzigen signifikanten Veränderungen ssl_protocols, ssl_prefer_server_ciphersund worker_processes. Sie hätten diese ohnehin Jahre überschreiben müssen, bevor Sie sie in das deb-Paket aufgenommen haben. Dies schien für die Paketbetreuer eine vernünftige Sache zu sein.

In der Vergangenheit wurde die einzige wirkliche Schadensbegrenzung, die mit einer systemweiten nginx.conf, die max_ranges 1;für CVE-2017-7529 hinzugefügt wurde, ausgeliefert werden konnte, nicht von einer mir bekannten Distribution, sondern vor den meisten Administratoren veröffentlicht die Milderung angewendet.

Sie können nicht erwarten, dass Paketbetreuer schneller sind als Sie, wenn Sie potenziell wichtige Änderungen hinzufügen. Daher werden Sie wahrscheinlich nicht davon profitieren, ihre Konfiguration zu erben. Paketbetreuer können nicht wissen, was für die Millionen von Anwendungsfällen da draußen am besten ist, und werden daher hier äußerst konservativ vorgehen, wenn es darum geht, Werte zu ändern.

Solange Ihr Backup-System ordnungsgemäß funktioniert, ist es wahrscheinlich immer noch eine gute Idee, die Konfiguration beizubehalten, sodass apt Sie während interaktiver Aktualisierungen fragt, wie Sie auf Änderungen des Betreuers an der Konfigurationsdatei reagieren sollen.


Wie stellen Sie fest, welche Änderungen zwischen den verschiedenen Releases vorgenommen wurden? Sie können alle (nicht verifizierten, unsicher heruntergeladenen) verfügbaren Paketversionen wie folgt vergleichen:

(cd "$(mktemp -d)"; rmadison --url=debian nginx-common | awk '{print $3}' | while read a; do curl "http://ftp.debian.org/debian/pool/main/n/nginx/nginx-common_${a}_all.deb" | dpkg -x - x${a}; done; for a in x*/etc/nginx/nginx.conf; do [ -z "$la" ] && la="$a" && continue; diff -wus "$la" "$a";la="$a" ; done; pwd)
angst
quelle
Die Geschichte liefert in diesem Fall in der Tat wertvolle Informationen. Vielen Dank für diese sehr gute Antwort. Ich verstehe Ihren Standpunkt. Angesichts der Bedeutung von Nginx weltweit ist es sehr unwahrscheinlich, dass eine wichtige Änderung in der Lebensdauer meiner HTTP-Server eintritt.
Gui-Don
1
Ich bin damit nicht einverstanden. Obwohl es unwahrscheinlich ist, dass aufgrund von Änderungen des Betreuers Probleme auftreten, hilft eine separate Konfiguration, die Wartungskosten zu senken sowie die Struktur zu verbessern und die Migration auf einen anderen Server zu vereinfachen.
XZero
@xZero Wollen Sie damit sagen, dass das Kopieren der Datei an einen anderen Speicherort dazu beiträgt, die Wartungskosten zu senken? Wenn ja, wie dann?
Angst