40 lines
1.5 KiB
Markdown

# 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:
```bash
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:
```nginx
#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
```bash
sudo crontab -e
```
I have it configured to update once every hour like this
```bash
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.