覆盖默认的 nginx http 配置而不更改默认的 nginx.conf

Gui*_*Don 21 configuration nginx

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

我做了什么:我/etc/nginx/conf.d/以与其他几个 debian 服务相同的方式创建了一个自定义配置。

问题:但是,似乎无法覆盖某些配置,因为我收到“X”指令重复错误。Nginx 似乎不像其他服务那样支持配置覆盖。

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

非常感谢您的帮助。

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

anx*_*anx 5

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

是的你应该。

包维护者所做的唯一更改是

  • 更合理的参数默认值你应该在很久以前就已经设置好了
  • #- 无论如何都不会在没有您的操作的情况下使用的前缀示例

过去,唯一显着的变化是ssl_protocolsssl_prefer_server_ciphersworker_processes。无论如何,在将它们设置在 deb 包中之前,您应该一直覆盖它们,这对于包维护者来说似乎是一件合理的事情。

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

您不能期望包维护者在添加潜在破坏性更改方面比您更快,因此您可能不会从继承他们的配置中受益。包维护者无法知道什么最适合数以百万计的用例,因此在这里更改值时会非常保守。

只要您的备份系统正常工作,保持配置就位可能仍然是一个好主意,这样 apt 会在交互式更新期间询问您如何对维护者对配置文件的更改采取行动。


您如何确定不同版本之间应用了哪些更改?您可以比较所有(未经验证、下载不安全)可用的软件包版本,如下所示:

(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)
Run Code Online (Sandbox Code Playgroud)

  • 我不同意这一点。虽然不太可能因为维护者的变化而出现问题,但单独的配置将有助于降低维护成本,并有更好的结构和更容易迁移到不同的服务器,如果需要的话。 (2认同)