Timpa konfigurasi default nginx http tanpa mengubah nginx.conf default

14

Tujuan saya : Saya ingin mengganti konfigurasi default yang didefinisikan dalam /etc/nginx/nginx.conf(dalam debian 8). Idenya adalah untuk menjaga file ini sepenuhnya tidak tersentuh untuk memudahkan pembaruan sistem di masa depan dan bisa mendapatkan perubahan terbaru untuk opsi yang tidak saya timpa.

Apa yang saya lakukan : Saya membuat konfigurasi khusus /etc/nginx/conf.d/dengan cara yang sama saya lakukan untuk beberapa layanan debian lainnya.

Masalah : Namun, sepertinya tidak mungkin untuk mengganti beberapa konfigurasi, karena saya mendapatkan arahan "X" adalah kesalahan duplikat . Nginx tampaknya tidak mendukung konfigurasi yang menimpa dengan cara yang sama seperti layanan lainnya.

Pertanyaan : Apakah ada cara untuk mengganti dan menambahkan opsi baru ke konteks nginx http tanpa mendapatkan arahan apakah ada duplikat error? Atau haruskah saya sepenuhnya meninggalkan ide dan mengamuk nginx.conf?

Terima kasih banyak atas bantuanmu.

Pertanyaan serupa ini tidak benar-benar menyelesaikan masalah saya, karena saya juga ingin mendapat untung dari opsi default yang diatur secara otomatis untuk saya (misalnya worker_processes auto;)

Bendera
sumber
1
Apakah Anda benar-benar mulai menggunakan Debian? Konfigurasi nginx mereka sangat berbeda dengan hulu, dan ini mungkin tidak mungkin.
Michael Hampton
Iya. Saya memiliki beberapa server produksi yang sudah berjalan di Debian dan ini adalah tentang mengubah apache2 menjadi nginx saja. Jadi, apa yang Anda katakan kepada saya adalah bahwa dalam distribusi lain, apa yang saya coba mungkin berhasil? Apakah ada kemungkinan bahwa itu akan berhasil di masa depan dengan Debian?
Gui-Don
Ini tentu mungkin bahwa Debian akan mengirimkan konfigurasi nginx lebih masuk akal di masa depan. Anda juga bisa membuatnya sendiri.
Michael Hampton

Jawaban:

2

Atau haruskah saya sepenuhnya meninggalkan ide dan mengamuk nginx.conf?

Ya kamu harus.

Satu-satunya perubahan yang pernah dilakukan oleh pengelola paket adalah salah satunya

  • standar yang lebih masuk akal untuk parameter Anda harus mengatur sendiri beberapa waktu yang lalu
  • #Contoh -prefixed yang tidak akan digunakan tanpa tindakan Anda pula

Di masa lalu, satu-satunya perubahan signifikan adalah ssl_protocols, ssl_prefer_server_ciphersdan worker_processes. Anda seharusnya telah mengesampingkan hal itu bertahun-tahun sebelum memasukkannya ke dalam paket deb sepertinya merupakan hal yang masuk akal untuk dilakukan bagi pengelola paket.

Di masa lalu, satu-satunya mitigasi nyata yang bisa dikirim dengan nginx.conf seluruh sistem, menambahkan max_ranges 1;untuk CVE-2017-7529 tidak dikirimkan oleh distribusi apa pun yang saya tahu, mereka merilis perbaikan untuk kerentanan sebelum sebagian besar admin bahkan menerapkan mitigasi.

Anda tidak bisa mengharapkan pengelola paket lebih cepat daripada Anda menambahkan perubahan yang berpotensi melanggar, sehingga Anda mungkin tidak akan mendapat untung dari mewarisi konfigurasi mereka. Pengelola paket tidak dapat mengetahui yang terbaik untuk jutaan kasus penggunaan di luar sana dan karenanya akan sangat konservatif dalam mengubah nilai-nilai di sini.

Selama sistem cadangan Anda berfungsi dengan baik, kemungkinan masih merupakan ide yang bagus untuk mempertahankan konfigurasi, sehingga apt akan menanyakan kepada Anda selama pembaruan interaktif bagaimana bertindak atas perubahan pengelola terhadap file konfigurasi.


Bagaimana Anda mengetahui perubahan apa yang diterapkan antara rilis yang berbeda? Anda dapat membandingkan semua versi paket yang tersedia (tidak diverifikasi, tidak aman) seperti ini:

(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
sumber
Sejarah memang membawa informasi berharga dalam kasus ini, jadi terima kasih atas jawaban yang sangat bagus ini. Saya mengerti maksud Anda, mengingat pentingnya nginx di seluruh dunia, sangat tidak mungkin perubahan penting akan terjadi seumur hidup server HTTP saya.
Gui-Don
1
Saya tidak setuju dengan ini. Sementara itu tidak mungkin bahwa masalah akan terjadi karena perubahan pengelola, memiliki konfigurasi terpisah akan membantu mengurangi biaya pemeliharaan serta memiliki struktur yang lebih baik dan migrasi yang lebih mudah ke server yang berbeda, jika diperlukan.
xZero
@xZero Apakah Anda mengatakan bahwa menyalin file ke lokasi lain akan membantu mengurangi biaya perawatan? Jika ya, bagaimana bisa begitu?
anx