J'essaie de restreindre l'accès aux ressources derrière Nginx en fonction de l'adresse IP du client transmise dans les en-têtes X-forwarded-for. Nginx s'exécute dans un conteneur sur un cluster Kubernetes sur Google Cloud Platform et les ips des clients réels sont transmis uniquement dans l'en-tête x-forwarded-for
Jusqu'à présent, j'ai réussi à le faire pour une seule IP avec le code suivant:
set $allow false;
if ($http_x_forwarded_for ~* 123.233.233.123) {
set $allow true;
}
if ($http_x_forward_for ~* 10.20.30.40) {
set $allow false;
}
if ($allow = false) {
return 403;
}
Mais comment puis-je faire cela pour des plages entières d'adresses IP? La spécification manuelle de centaines d'adresses IP n'a pas beaucoup de sens.
Toute aide est appréciée
location / { real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; allow xxx.xxx.xxx.xxx;