如何正确监视和重新加载 Nginx 配置?

vel*_*lo9 3 nginx

我有两个问题:

  • 有区别吗:nginx -s reloadpkill -HUP -F nginx.pid
  • 观察 Nginx conf 文件并在更改后测试 conf 文件 ( nginx -t) 的最简单方法是什么,如果通过则重新加载 Nginx。runit这可以通过像主管这样的流程经理来完成吗?

Dev*_*nte 5

#!/bin/bash

# NGINX WATCH DAEMON
#
# Author: Devonte
#
# Place file in root of nginx folder: /etc/nginx
# This will test your nginx config on any change and
# if there are no problems it will reload your configuration
# USAGE: sh nginx-watch.sh

# Set NGINX directory
# tar command already has the leading /
dir='etc/nginx'

# Get initial checksum values
checksum_initial=$(tar --strip-components=2 -C / -cf - $dir | md5sum | awk '{print $1}')
checksum_now=$checksum_initial

# Start nginx
nginx

# Daemon that checks the md5 sum of the directory
# ff the sums are different ( a file changed / added / deleted)
# the nginx configuration is tested and reloaded on success
while true
do
    checksum_now=$(tar --strip-components=2 -C / -cf - $dir | md5sum | awk '{print $1}')

    if [ $checksum_initial != $checksum_now ]; then
        echo '[ NGINX ] A configuration file changed. Reloading...'
        nginx -t && nginx -s reload;
    fi

    checksum_initial=$checksum_now

    sleep 2
done
Run Code Online (Sandbox Code Playgroud)