He notado en mi nginx access.log entradas como esta:
XX.XX.XX.XX - - [05/Jan/2017:00:21:43 +0100] "GET / HTTP/1.1" 301 178 "-" "libwww-perl/6.05"
Esto es raro porque implementé el bloqueo de GeoIP en nginx, por lo que solo las direcciones IP de mi país y de la red local tienen acceso a mi servidor. Otras IP deberían estar "bloqueadas" con el código de estado HTTP 444. Esta implementación de GeoIP debería funcionar, porque la he probado varias veces.
Pero, ¿por qué nginx devuelve 301 a esta dirección IP extranjera (no en mi país)?
Esta es mi configuración nginx:
server {
listen 80;
server_name example.com;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
if ($lan-ip = yes) {
set $allowed_country yes;
}
if ($allowed_country = no) {
return 444;
}
root /var/www/html;
# SSL Configuration
# .
# .
# .
}
Esta es la parte de bloqueo de GeoIP en nginx.conf :
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default no;
DE yes;
}
geo $lan-ip {
default no;
192.168.0.0/24 yes;
}