Zastąp domyślną konfigurację nginx http bez zmiany domyślnej nginx.conf

14

Moja intencja : Chciałbym zastąpić domyślną konfigurację zdefiniowaną w /etc/nginx/nginx.conf(w debian 8). Chodzi o to, aby ten plik był całkowicie nietknięty, aby ułatwić przyszłe aktualizacje systemu i móc uzyskać najnowsze zmiany dla opcji, których nie zastąpiłem.

Co zrobiłem : stworzyłem konfigurację niestandardową w /etc/nginx/conf.d/ten sam sposób, co zrobiłem dla kilku innych usług Debiana.

Problem : Jednak wydaje się niemożliwe zastąpienie niektórych konfiguracji, ponieważ dostaję dyrektywę „X” to duplikat błędu. Nginx nie obsługuje zastępowania konfiguracji w taki sam sposób, jak inne usługi.

Pytanie : Czy istnieje sposób na zastąpienie i dodanie nowej opcji do kontekstu http nginx bez uzyskania dyrektywy, że błąd jest duplikatem ? A może powinienem całkowicie porzucić pomysł i szaleć nginx.conf?

Wielkie dzięki za Twoją pomoc.

To podobne pytanie tak naprawdę nie rozwiązuje mojego problemu, ponieważ chcę również czerpać zyski z domyślnych opcji nginx ustawionych automatycznie dla mnie (np. worker_processes auto;)

Proporczyk
źródło
1
Czy naprawdę chcesz używać Debiana? Ich konfiguracja nginx jest zupełnie inna niż wcześniej, i może to nie być możliwe.
Michael Hampton
Tak. Mam już kilka serwerów produkcyjnych działających na Debianie i chodzi o zmianę apache2 tylko na nginx. Więc mówisz mi, że w innej dystrybucji to, co próbowałem, może działać? Czy jest szansa, że ​​w przyszłości zadziała z Debianem?
Gui-Don,
Z pewnością jest możliwe, że Debian dostarczy bardziej rozsądną konfigurację nginx w przyszłości. Możesz także po prostu stworzyć swój własny.
Michael Hampton

Odpowiedzi:

2

A może powinienem całkowicie porzucić ten pomysł i zepsuć plik nginx.conf?

Tak, powinieneś.

Jedynymi zmianami, które kiedykolwiek zostały wprowadzone przez opiekunów pakietów, są albo

  • bardziej sensowne wartości domyślne parametrów, które i tak powinieneś był ustawić długo
  • #-prefiksowane przykłady, które i tak nie byłyby używane bez twojego działania

W przeszłości, jedyne znaczące zmiany były ssl_protocols, ssl_prefer_server_ciphersi worker_processes. Powinieneś przesłonić te i tak lata, zanim umieszczenie ich w pakiecie deb wydawało się rozsądnym rozwiązaniem dla opiekunów pakietów.

W przeszłości jedyne prawdziwe ograniczenie, które mogło zostać dostarczone z ogólnosystemowym nginx.conf, dodając max_ranges 1;do CVE-2017-7529, nie było dostarczane przez żadną znaną mi dystrybucję, wydali oni poprawkę dotyczącą luki w zabezpieczeniach zanim większość administratorów nawet zastosował łagodzenie.

Nie możesz oczekiwać, że opiekunowie pakietów będą szybsi niż dodawanie potencjalnie niszczących zmian, więc prawdopodobnie nie odniesiesz korzyści z dziedziczenia ich konfiguracji. Opiekunowie pakietów nie mogą wiedzieć, co jest najlepsze w milionach przypadków użycia, dlatego będą bardzo konserwatywni w zmienianiu wartości tutaj.

Tak długo, jak system kopii zapasowej działa poprawnie, prawdopodobnie dobrym pomysłem jest utrzymanie konfiguracji na miejscu, aby podczas interaktywnych aktualizacji apt zapytał cię, jak postępować w przypadku zmian opiekuna w pliku konfiguracyjnym.


Jak dowiedzieć się, jakie zmiany zastosowano w różnych wersjach? Możesz porównać wszystkie (niezweryfikowane, niepewnie pobrane) dostępne wersje pakietów, takie jak to:

(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)
anx
źródło
Historia rzeczywiście przynosi cenne informacje w tym przypadku, więc dziękuję za tę bardzo dobrą odpowiedź. Rozumiem twój punkt widzenia, biorąc pod uwagę znaczenie nginx na całym świecie, jest wysoce nieprawdopodobne, że ważna przełomowa zmiana nastąpi w czasie życia moich serwerów HTTP.
Gui-Don,
1
Nie zgadzam się z tym. Chociaż jest mało prawdopodobne, że wystąpią problemy z powodu zmian opiekuna, osobna konfiguracja pomoże obniżyć koszty utrzymania, a także mieć lepszą strukturę i łatwiejszą migrację na inny serwer, jeśli zajdzie taka potrzeba.
xZero
1
@xZero Czy mówisz, że skopiowanie pliku do innej lokalizacji pomoże obniżyć koszty konserwacji? Jeśli tak, to w jaki sposób?
anx