事实上,没有与 nginx 等效的自然 .htaccess,这是否意味着我们必须在每次小配置更改后重新启动整个服务器?

事实上,没有与 nginx 等效的自然 .htaccess,这是否意味着我们必须在每次小配置更改后重新启动整个服务器?

使用 Apache,如果我想稍微修改我服务器上某个网站的“重写规则”,我只需编辑几行/var/www/website5/.htaccess,保存,它就会立即生效。

好处:不需要service apache2 restart,因此不会中断正在进行的连接其他网站位于同一台服务器上(假设有人正在下载 1 GB 的大文件,我不想打断它!)。


问题:我现在正在测试 nginx,我读到没有与 .htaccess 等同的“自然”版本(当然,有一些附加组件可以实现这一点,但在这里我真正关注的是理解 nginx 的原始理念,它没有这个功能)。

如何稍微修改nginx网站的配置(例如 URL 重写规则),而不需要重新启动整个服务器(托管许多网站)?

附言:

  • 如果存在“优雅重新加载”功能,该功能在重新启动 nginx 之前等待请求终止,这是否意味着如果客户端刚刚开始下载一个将持续 2 小时的 2GB 文件,则 nginx 将等待 2 小时(等待请求完成)再重新加载新配置?
    如果我们必须等待几分钟/几小时来测试配置修改是否完成,那么修改配置将非常困难。

  • 如果不存在后一个问题,它是如何工作的?(是否有关于这一具体观点的文献资料来源?)

答案1

可以使用“reload”来避免重新启动 nginx 服务。您可以使用命令service nginx reload。这将重新加载 nginx 而不会停机。请务必先检查您的 nginx 语法:service nginx configtest

这可以通过一个命令完成:

service nginx configtest && service nginx reload

第一个命令的wil &&only continue 给出了 0 退出代码,表明配置语法没有问题。

在重新加载时,Nginx 进程将正常关闭。有关此内容的更多信息,请参阅Nginx 文档

例子:

如果您有 4 个 Nginx 工作进程,其中一个进程负责长时间下载,则重新加载后您将有 5 个工作进程:4 个新的工作进程和一个处理下载直至完成(标记为关闭)的工作进程。

相关内容