diff --git a/content/posts/nginx_geo_block.md b/content/posts/nginx_geo_block.md index d26e713..abf2483 100644 --- a/content/posts/nginx_geo_block.md +++ b/content/posts/nginx_geo_block.md @@ -1,23 +1,20 @@ --- -title: "Geo Blocking countries with nginx" -tags: ["spam", "geo block", "nginx"] -date: "2024-04-07" +title: "GeoIP blocking countries using nginx" +tags: ["nginx", "geoip", "spam", "geo block"] +date: "2024-04-06" --- Quick and easy way to block entire countries using simple nginx rules. -Note this is primarily for Ubuntu/Nginx but may work on other systems +Note this is for Ubuntu/Nginx but may work on other systems. -Install required fields +Install required packages & add to nginx config. +The GeoIP DB will be under /usr/shared/GeoIP/GeoIPv6.dat (Or GeoIP.dat for v4 only): ```shell apt install -y libnginx-mod-http-geoip geoip-database -``` - -The GeoIP DB will be under /usr/shared/GeoIP/GeoIPv6.dat (Or GeoIP.dat for v4 only) -We need to add this into nginx conf: -```shell echo 'geoip_country /usr/share/GeoIP/GeoIP.dat;' > /etc/nginx/conf.d/geoip.conf ``` + Add this block under the main "http" block in nginx.conf: ```shell # /etc/nginx/nginx.conf @@ -27,7 +24,7 @@ map $geoip_country_code $allowed_country { } ``` -Then we need to add a simple check in our site vhost: +Then we need to add a simple check in our site vhost inside the `server {` block, but before the `location /` block: ```shell # /etc/nginx/sites-enabled/your_site.conf if ($allowed_country = no) {