config: expose GeoLite2 data via env vars
Adds GeoLite2 databases and configures nginx to expose the data via GEOIP2_ namespaced environment variables.
This commit is contained in:
@@ -242,6 +242,12 @@ ADD conf/nginx-site.conf /etc/nginx/sites-available/default.conf
|
||||
ADD conf/nginx-site-ssl.conf /etc/nginx/sites-available/default-ssl.conf
|
||||
RUN ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf
|
||||
|
||||
# Add GeoLite2 databases (https://dev.maxmind.com/geoip/geoip2/geolite2/)
|
||||
RUN curl -fSL http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz -o /etc/nginx/GeoLite2-City.mmdb.gz \
|
||||
&& curl -fSL http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz -o /etc/nginx/GeoLite2-Country.mmdb.gz \
|
||||
&& gunzip /etc/nginx/GeoLite2-City.mmdb.gz \
|
||||
&& gunzip /etc/nginx/GeoLite2-Country.mmdb.gz
|
||||
|
||||
# tweak php-fpm config
|
||||
RUN echo "cgi.fix_pathinfo=0" > ${php_vars} &&\
|
||||
echo "upload_max_filesize = 100M" >> ${php_vars} &&\
|
||||
|
||||
@@ -63,6 +63,16 @@ server {
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param GEOIP2_LONGITUDE $geoip2_data_longitude;
|
||||
fastcgi_param GEOIP2_LATITUDE $geoip2_data_latitude;
|
||||
fastcgi_param GEOIP2_CONTINENT_CODE $geoip2_data_continent_code;
|
||||
fastcgi_param GEOIP2_CONTINENT_NAME $geoip2_data_continent_name;
|
||||
fastcgi_param GEOIP2_COUNTRY_CODE $geoip2_data_country_code;
|
||||
fastcgi_param GEOIP2_COUNTRY_NAME $geoip2_data_country_name;
|
||||
fastcgi_param GEOIP2_STATE_CODE $geoip2_data_state_code;
|
||||
fastcgi_param GEOIP2_STATE_NAME $geoip2_data_state_name;
|
||||
fastcgi_param GEOIP2_CITY_NAME $geoip2_data_city_name;
|
||||
fastcgi_param GEOIP2_POSTAL_CODE $geoip2_data_postal_code;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,16 @@ server {
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param GEOIP2_LONGITUDE $geoip2_data_longitude;
|
||||
fastcgi_param GEOIP2_LATITUDE $geoip2_data_latitude;
|
||||
fastcgi_param GEOIP2_CONTINENT_CODE $geoip2_data_continent_code;
|
||||
fastcgi_param GEOIP2_CONTINENT_NAME $geoip2_data_continent_name;
|
||||
fastcgi_param GEOIP2_COUNTRY_CODE $geoip2_data_country_code;
|
||||
fastcgi_param GEOIP2_COUNTRY_NAME $geoip2_data_country_name;
|
||||
fastcgi_param GEOIP2_STATE_CODE $geoip2_data_state_code;
|
||||
fastcgi_param GEOIP2_STATE_NAME $geoip2_data_state_name;
|
||||
fastcgi_param GEOIP2_CITY_NAME $geoip2_data_city_name;
|
||||
fastcgi_param GEOIP2_POSTAL_CODE $geoip2_data_postal_code;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,38 @@ http {
|
||||
server_tokens off;
|
||||
#gzip on;
|
||||
|
||||
geoip2 /etc/nginx/GeoLite2-Country.mmdb {
|
||||
auto_reload 1h;
|
||||
|
||||
$geoip2_metadata_country_build metadata build_epoch;
|
||||
|
||||
# populate the country
|
||||
$geoip2_data_country_code source=$remote_addr country iso_code;
|
||||
$geoip2_data_country_name source=$remote_addr country names en;
|
||||
|
||||
# populate the continent
|
||||
$geoip2_data_continent_code source=$remote_addr continent code;
|
||||
$geoip2_data_continent_name source=$remote_addr continent names en;
|
||||
}
|
||||
|
||||
geoip2 /etc/nginx/GeoLite2-City.mmdb {
|
||||
auto_reload 1h;
|
||||
|
||||
# City name itself
|
||||
$geoip2_data_city_name source=$remote_addr city names en;
|
||||
|
||||
# Postal code will be an approximation, probably the first one in the list that covers an area
|
||||
$geoip2_data_postal_code source=$remote_addr postal code;
|
||||
|
||||
# State in code and long form
|
||||
$geoip2_data_state_code source=$remote_addr subdivisions 0 iso_code;
|
||||
$geoip2_data_state_name source=$remote_addr subdivisions 0 names en;
|
||||
|
||||
# Lat and Lng
|
||||
$geoip2_data_latitude source=$remote_addr location latitude;
|
||||
$geoip2_data_longitude source=$remote_addr location longitude;
|
||||
}
|
||||
|
||||
include /etc/nginx/sites-enabled/*;
|
||||
}
|
||||
#daemon off;
|
||||
|
||||
Reference in New Issue
Block a user