Здравствуйте.
Я хотел бы заблокировать доступ к сайту по geoip признаку. При этом, мне бы хотелось возвращать стилизированную картинку.
я это вижу как-то так:
if ($allowed_country = no) {
return 403;
error_page 403 /errors/deny.html;
}
В самом конфиге много location-ов. Я не хотел бы копировать этот код во все из них. Алетрнатива - указать его глобально, но тогда я не могу использовать в блоке if - "error_page 403 /pages/unavailable.html; " Эту директиву нельзя использовать в том контексте.
В итоге у меня получается или указать блокирование глобально в директиве server, но без красивой ошибки или копировать код во все location-ы
Конфиг выглядит примерно так:
server {
listen 443 ssl http2; ## listen for ipv4
listen [::]:443 ssl http2; ## listen for ipv6
server_name example.com;
root /var/www/html/
location / {
if ($allowed_country = no) {
return 403;
error_page 403 /pages/unavailable.html;
}
}
location = /admin {
try_files $uri /index.php$is_args$args;
if ($allowed_country = no) {
return 403;
error_page 403 /pages/unavailable.html;
}
}
location /errors/ {
root /var/www/html/errors/;
internal;
}
}
Подозреваю, что я что-то не так делаю. Прошу помочь. Спасибо!