1.5 KiB

NGINX ALLOW DYNAMIC IP

Configure nginx config files to edit IP based on domain name

Requirements

dig
dig is most likely installed on your distro but incase it isn't install it first

Usage

First, get the script and make it executable:

curl -O https://git.shihaam.dev/shihaam/sarmic/raw/branch/master/nginx-allow-dynamicip/nginx-allow-dynamicip.sh
chmod +x nginx-allow-dynamicip.sh

Make sure your nginx config server block contain "#DYNAMIC" after the IP you want to change dynamically
Something like the following:

        #Block public access
        allow 1.1.1.1; #DYNAMIC
        deny   all;

Excute the script as root (or with sudo) with 1st argument for config file and 2nd argument with domain of the IP you want to allow
sudo ./nginx-allow-dynamicip.sh db-sarlinode.shihaam.dev home.shihaam.me

Automate with cron

Run crontab -e as root as this script needs to edit nginx config file and restart nginx

sudo crontab -e

I have it configured to update once every hour like this

0 * * * * /home/shihaam/scripts/nginx-allow-dynamicip.sh freezer.shihaam.me home.shihaam.me

Notes

It is important that your nginx config files are in /etc/nginx/sites-available/ and symlinked to /etc/nginx/sites-enabled/,
This is done by default on Debian and Ubuntu, I noticed this is not how it's configured by default on Arch Linux and CentOS, If you're using those you have bigger issues. Tested and verifed to work on Debian Linux.