![事实上,没有与 nginx 等效的自然 .htaccess,这是否意味着我们必须在每次小配置更改后重新启动整个服务器?](https://linux22.com/image/746766/%E4%BA%8B%E5%AE%9E%E4%B8%8A%EF%BC%8C%E6%B2%A1%E6%9C%89%E4%B8%8E%20nginx%20%E7%AD%89%E6%95%88%E7%9A%84%E8%87%AA%E7%84%B6%20.htaccess%EF%BC%8C%E8%BF%99%E6%98%AF%E5%90%A6%E6%84%8F%E5%91%B3%E7%9D%80%E6%88%91%E4%BB%AC%E5%BF%85%E9%A1%BB%E5%9C%A8%E6%AF%8F%E6%AC%A1%E5%B0%8F%E9%85%8D%E7%BD%AE%E6%9B%B4%E6%94%B9%E5%90%8E%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%95%B4%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
使用 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 个新的工作进程和一个处理下载直至完成(标记为关闭)的工作进程。