How to dynamically reload nginx config
I'm currently trying to setup Nginx for a domain with production, testing and development stages. Each comes with it's own partial Nginx config file with rewrites.
The production and testing stages are set up as branches from a Git repository and automatic reloading of these configurations in Git's post-receive hook. This all works just fine.
The development stage I'd like to transmit using SFTP using Netbeans' "SFTP-on-save" as I don't need version control at this granularity and it's a bit more direct. However, here I have no such thing as git's post-receive hook to trigger Nginx to reload config upon upload.
In Apache, .htaccess files would just load dynamically. Is there anything similar in Nginx and/or how could I simulate this? Ideally a solution that reloads the config files only and immediately when changed.
Solution 1:
If you can't use a post-receive hook, perhaps you can use inotify
to watch for changes in the nginx configuration.
In this case, you would use incrond
and incrontab
to set up a watch on specified files and actions to take when those files change. Something like this in the incrontab
:
/etc/nginx/nginx.conf IN_MODIFY /etc/init.d/nginx reload
Here's the man page for incrontab. You should be able to find other documentation and examples for using the inotify
toolset that will fit your configuration.
Solution 2:
As cjc said, inotify
and service nginx reload
are the commands you are looking for.
Check out this post from nixCraft which gives a great explanation on how to configure inotify.