覆盖默认的nginx httpconfiguration,而不更改默认的nginx.conf

我的意图是 :我想覆盖/etc/nginx/nginx.conf中定义的默认configuration(在debian 8中)。 这个想法是保持这个文件完全不受影响,以减轻未来的系统更新,并能够得到我没有覆盖的选项的最新变化。

我做了什么 :我在/etc/nginx/conf.d/创build了一个自定义configuration,就像我为其他几个debian服务一样。

问题 :但是,重写一些configuration似乎是不可能的,因为我得到一个“X”指令是重复的错误。 Nginx似乎不像其他服务那样支持configuration覆盖。

问题 :有没有办法覆盖和添加新的选项到nginx的http上下文没有得到指令是重复的错误? 或者我应该完全放弃这个想法,并横冲直撞nginx.conf

非常感谢您的帮助。

这个类似的问题并不能真正解决我的问题,因为我也想从默认选项nginx中自动获取设置(例如worker_processes auto;

或者我应该完全放弃这个想法,并横冲直撞nginx.conf?

是的你应该。

软件包维护者所做的唯一的改变是

  • 无论如何,你应该为自己设定一个looong的参数更合理的默认值
  • #前缀的例子,不会没有你的行动使用

过去,唯一重要的变化是ssl_protocolsssl_prefer_server_ciphersworker_processes 。 在设置deb包之前,你应该已经压倒了那些年,似乎对于包维护者来说是合理的。

在过去,唯一真正的缓解可能已经与系统范围的nginx.conf一起发布,增加了max_ranges 1; 对于CVE-2017-7529没有发布任何我知道的发行版,他们在大多数pipe理员甚至应用缓解措施之前发布了针对他的漏洞的修复程序。

你不能期望包维护者比你添加潜在的重大更改更快,因此你可能不会从inheritance他们的configuration中获益。 程序包维护人员无法知道数百万用例的最佳状态,因此在更改值时会非常保守。

只要你的备份系统工作正常,它仍然是一个好主意,以保持configuration到位,所以apt会在交互更新中问你如何根据configuration文件的维护人员更改。


你怎么知道在不同的版本之间应用了什么变化? 您可以比较所有(未经validation,不安全地下载)可用的软件包版本,如下所示:

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