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


14

我的意图:我想重写在/etc/nginx/nginx.conf(debian 8)中定义的默认配置。这样做的目的是使该文件完全不受影响,以简化将来的系统更新,并能够获取我未覆盖的选项的最新更改。

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

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

问题:是否有一种方法可以覆盖nginx http上下文并向其中添加新选项,而不会导致指令重复错误?还是我应该完全放弃这个想法并横扫nginx.conf呢?

非常感谢您的帮助。

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


1
您真的打算使用Debian吗?他们的nginx配置与上游完全不同,这可能是不可能的。
迈克尔·汉普顿

是。我已经在Debian上运行了几台生产服务器,这是关于将apache2更改为仅nginx。那么,您告诉我的是,在其他发行版中,我尝试过的可能奏效了?将来有可能与Debian一起使用吗?
Gui-Don

Debian将来很有可能会发布更合理的nginx配置。您也可以创建自己的。
迈克尔·汉普顿

Answers:


2

还是我应该完全放弃这个想法并大肆宣传nginx.conf?

是的你应该。

软件包维护者曾经做过的唯一更改是

  • 更明智的参数默认值,无论如何,您应该在很长一段时间之前就设置好自己
  • #前缀的示例,如果没有您的操作,这些示例将无法使用

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

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

您不能期望软件包维护者比添加潜在的重大更改要快,因此,您可能不会从继承其配置中受益。程序包维护人员无法知道什么最适合那里的数百万个用例,因此在此处更改值时会非常保守。

只要您的备份系统正常工作,将配置保持在适当位置还是一个好主意,以便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)

在这种情况下,历史确实带来了宝贵的信息,因此,感谢您的出色回答。我理解您的观点,考虑到nginx在全球范围内的重要性,在我的HTTP服务器的生命周期中发生重大突破是非常不可能的。
Gui-Don

1
我不同意这一点。尽管不太可能因维护人员的更改而出现问题,但如果需要的话,使用单独的配置将有助于降低维护成本,并具有更好的结构并更容易迁移到其他服务器。
xZero

1
@xZero您是说将文件复制到另一个位置将有助于降低维护成本吗?如果是这样,怎么办?
斧头
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.