web-dev-qa-db-ja.com

デフォルトのnginx.confを変更せずにデフォルトのnginx http構成を上書きする

私の意図/etc/nginx/nginx.conf(debian 8)で定義されているデフォルトの設定を上書きしたいと思います。アイデアは、将来のシステム更新を容易にし、オーバーライドしなかったオプションの最新の変更を取得できるように、このファイルを完全に変更しないでおくことです。

私がしたこと:他のいくつかのdebianサービスで行ったのと同じ方法で/etc/nginx/conf.d/にカスタム設定を作成しました。

問題:ただし、 "X"ディレクティブが重複するため、一部の構成をオーバーライドすることは不可能のようですエラー。 Nginxは、他のサービスと同じように構成オーバーライドをサポートしていないようです。

質問:上書きせずに新しいオプションをnginxhttpコンテキストに追加する方法はありますかディレクティブは重複していますエラー?それとも私はアイデアを完全に放棄してnginx.confを暴行する必要がありますか?

ご協力いただき誠にありがとうございます。

この同様の質問 は私の問題を実際には解決しません。私のために自動的に設定されたデフォルトオプションnginxからも利益を得たいからです(例worker_processes auto;

14
Gui-Don

それとも私はアイデアを完全に放棄してnginx.confを暴行する必要がありますか?

はい、そうすべきです。

パッケージメンテナがこれまでに行った唯一の変更は、

  • とにかく、かなり前に自分で設定しておくべきパラメータのより適切なデフォルト
  • #接頭辞付きの例は、とにかくアクションなしでは使用されません。

以前は、重要な変更はssl_protocolsssl_prefer_server_ciphersおよびworker_processes。それらをdebパッケージに設定する前に、何年もそれらをオーバーライドしておくべきでしたが、パッケージのメンテナーにとっては妥当なことのように思えました。

以前は、システム全体のnginx.confに同梱されていたmax_ranges 1; for CVE-2017-7529は私が知っているどのディストリビューションでも出荷されていません。ほとんどの管理者が緩和策を適用する前に、脆弱性に対する修正をリリースしました。

パッケージのメンテナが潜在的な破壊的な変更を追加するよりも速くなることは期待できません。そのため、おそらくそれらの設定を継承することから利益を得られません。パッケージのメンテナは、何百万ものユースケースに最適なものを知ることができないため、ここで値を変更するのは非常に保守的です。

バックアップシステムが適切に機能している限り、configを適切な場所に維持することをお勧めします。これにより、aptは、インタラクティブな更新中に、configファイルに対するメンテナの変更に対処する方法を尋ねます。


異なるリリース間でどのような変更が適用されたかをどのように把握しますか?次のように、すべての(未検証、安全にダウンロードされていない)利用可能なパッケージバージョンを比較できます。

(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)
2
anx