Skip to content

Commit 11f83b6

Browse files
author
Ric Harvey
committed
Merge branch 'upstream-ngx_http_geoip2_module-support' into 'master'
ngx_http_geoip2_module support See merge request ric_harvey/nginx-php-fpm!260
2 parents da5eb4a + addfa1a commit 11f83b6

File tree

4 files changed

+65
-1
lines changed

4 files changed

+65
-1
lines changed

Dockerfile

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ ENV php_vars /usr/local/etc/php/conf.d/docker-vars.ini
99
ENV NGINX_VERSION 1.16.1
1010
ENV LUA_MODULE_VERSION 0.10.14
1111
ENV DEVEL_KIT_MODULE_VERSION 0.3.0
12+
ENV GEOIP2_MODULE_VERSION 3.2
1213
ENV LUAJIT_LIB=/usr/lib
1314
ENV LUAJIT_INC=/usr/include/luajit-2.1
1415

@@ -64,6 +65,7 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
6465
--with-http_v2_module \
6566
--add-module=/usr/src/ngx_devel_kit-$DEVEL_KIT_MODULE_VERSION \
6667
--add-module=/usr/src/lua-nginx-module-$LUA_MODULE_VERSION \
68+
--add-module=/usr/src/ngx_http_geoip2_module-$GEOIP2_MODULE_VERSION \
6769
" \
6870
&& addgroup -S nginx \
6971
&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \
@@ -81,12 +83,14 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
8183
libxslt-dev \
8284
gd-dev \
8385
geoip-dev \
86+
libmaxminddb-dev \
8487
perl-dev \
8588
luajit-dev \
8689
&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \
8790
&& curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o nginx.tar.gz.asc \
8891
&& curl -fSL https://github.com/simpl/ngx_devel_kit/archive/v$DEVEL_KIT_MODULE_VERSION.tar.gz -o ndk.tar.gz \
8992
&& curl -fSL https://github.com/openresty/lua-nginx-module/archive/v$LUA_MODULE_VERSION.tar.gz -o lua.tar.gz \
93+
&& curl -fSL https://github.com/leev/ngx_http_geoip2_module/archive/$GEOIP2_MODULE_VERSION.tar.gz -o ngx_http_geoip2_module.tar.gz \
9094
&& export GNUPGHOME="$(mktemp -d)" \
9195
&& found=''; \
9296
for server in \
@@ -105,7 +109,8 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
105109
&& tar -zxC /usr/src -f nginx.tar.gz \
106110
&& tar -zxC /usr/src -f ndk.tar.gz \
107111
&& tar -zxC /usr/src -f lua.tar.gz \
108-
&& rm nginx.tar.gz ndk.tar.gz lua.tar.gz \
112+
&& tar -zxC /usr/src -f ngx_http_geoip2_module.tar.gz \
113+
&& rm nginx.tar.gz ndk.tar.gz lua.tar.gz ngx_http_geoip2_module.tar.gz \
109114
&& cd /usr/src/nginx-$NGINX_VERSION \
110115
&& ./configure $CONFIG --with-debug \
111116
&& make -j$(getconf _NPROCESSORS_ONLN) \
@@ -133,6 +138,7 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
133138
&& strip /usr/sbin/nginx* \
134139
&& strip /usr/lib/nginx/modules/*.so \
135140
&& rm -rf /usr/src/nginx-$NGINX_VERSION \
141+
&& rm -rf /usr/src/ngx_http_geoip2_module-$GEOIP2_MODULE_VERSION \
136142
\
137143
# Bring in gettext so we can get `envsubst`, then throw
138144
# the rest away. To do this, we need to install `gettext`
@@ -235,6 +241,12 @@ ADD conf/nginx-site.conf /etc/nginx/sites-available/default.conf
235241
ADD conf/nginx-site-ssl.conf /etc/nginx/sites-available/default-ssl.conf
236242
RUN ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf
237243

244+
# Add GeoLite2 databases (https://dev.maxmind.com/geoip/geoip2/geolite2/)
245+
RUN curl -fSL http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz -o /etc/nginx/GeoLite2-City.mmdb.gz \
246+
&& curl -fSL http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz -o /etc/nginx/GeoLite2-Country.mmdb.gz \
247+
&& gunzip /etc/nginx/GeoLite2-City.mmdb.gz \
248+
&& gunzip /etc/nginx/GeoLite2-Country.mmdb.gz
249+
238250
# tweak php-fpm config
239251
RUN echo "cgi.fix_pathinfo=0" > ${php_vars} &&\
240252
echo "upload_max_filesize = 100M" >> ${php_vars} &&\

conf/nginx-site-ssl.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ server {
6363
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
6464
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
6565
fastcgi_index index.php;
66+
fastcgi_param GEOIP2_LONGITUDE $geoip2_data_longitude;
67+
fastcgi_param GEOIP2_LATITUDE $geoip2_data_latitude;
68+
fastcgi_param GEOIP2_CONTINENT_CODE $geoip2_data_continent_code;
69+
fastcgi_param GEOIP2_CONTINENT_NAME $geoip2_data_continent_name;
70+
fastcgi_param GEOIP2_COUNTRY_CODE $geoip2_data_country_code;
71+
fastcgi_param GEOIP2_COUNTRY_NAME $geoip2_data_country_name;
72+
fastcgi_param GEOIP2_STATE_CODE $geoip2_data_state_code;
73+
fastcgi_param GEOIP2_STATE_NAME $geoip2_data_state_name;
74+
fastcgi_param GEOIP2_CITY_NAME $geoip2_data_city_name;
75+
fastcgi_param GEOIP2_POSTAL_CODE $geoip2_data_postal_code;
6676
include fastcgi_params;
6777
}
6878

conf/nginx-site.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@ server {
5959
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
6060
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
6161
fastcgi_index index.php;
62+
fastcgi_param GEOIP2_LONGITUDE $geoip2_data_longitude;
63+
fastcgi_param GEOIP2_LATITUDE $geoip2_data_latitude;
64+
fastcgi_param GEOIP2_CONTINENT_CODE $geoip2_data_continent_code;
65+
fastcgi_param GEOIP2_CONTINENT_NAME $geoip2_data_continent_name;
66+
fastcgi_param GEOIP2_COUNTRY_CODE $geoip2_data_country_code;
67+
fastcgi_param GEOIP2_COUNTRY_NAME $geoip2_data_country_name;
68+
fastcgi_param GEOIP2_STATE_CODE $geoip2_data_state_code;
69+
fastcgi_param GEOIP2_STATE_NAME $geoip2_data_state_name;
70+
fastcgi_param GEOIP2_CITY_NAME $geoip2_data_city_name;
71+
fastcgi_param GEOIP2_POSTAL_CODE $geoip2_data_postal_code;
6272
include fastcgi_params;
6373
}
6474

conf/nginx.conf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,38 @@ http {
3333
server_tokens off;
3434
#gzip on;
3535

36+
geoip2 /etc/nginx/GeoLite2-Country.mmdb {
37+
auto_reload 1h;
38+
39+
$geoip2_metadata_country_build metadata build_epoch;
40+
41+
# populate the country
42+
$geoip2_data_country_code source=$remote_addr country iso_code;
43+
$geoip2_data_country_name source=$remote_addr country names en;
44+
45+
# populate the continent
46+
$geoip2_data_continent_code source=$remote_addr continent code;
47+
$geoip2_data_continent_name source=$remote_addr continent names en;
48+
}
49+
50+
geoip2 /etc/nginx/GeoLite2-City.mmdb {
51+
auto_reload 1h;
52+
53+
# City name itself
54+
$geoip2_data_city_name source=$remote_addr city names en;
55+
56+
# Postal code will be an approximation, probably the first one in the list that covers an area
57+
$geoip2_data_postal_code source=$remote_addr postal code;
58+
59+
# State in code and long form
60+
$geoip2_data_state_code source=$remote_addr subdivisions 0 iso_code;
61+
$geoip2_data_state_name source=$remote_addr subdivisions 0 names en;
62+
63+
# Lat and Lng
64+
$geoip2_data_latitude source=$remote_addr location latitude;
65+
$geoip2_data_longitude source=$remote_addr location longitude;
66+
}
67+
3668
include /etc/nginx/sites-enabled/*;
3769
}
3870
#daemon off;

0 commit comments

Comments
 (0)