无法为 GeoIP 设置自定义错误页面 403

无法为 GeoIP 设置自定义错误页面 403

请帮忙。无法显示 geoip 限制的自定义错误 403 页面。它始终显示默认错误页面 403 Forbidden。

这是我的配置。

/etc/nginx/nginx.conf

geoip2 /usr/local/GeoLite2-Country_DB_Nginx/GeoLite2-Country.mmdb {
  auto_reload 60m;
  $geoip2_metadata_country_build metadata build_epoch;
  $geoip2_data_country_code country iso_code;
  $geoip2_data_country_name country names en;
}

map $geoip2_data_country_code $allowed_country {
  default no;
  PK yes;
  #DE yes;
  #US no;
}

geo $exclusions {
  default 0;
}

/etc/nginx/conf.d/www.test.com

error_page  403 /403.html;

location = /403.html {
  root   /var/www/html;
  allow all;
  internal;
}

if ($allowed_country = yes) {
  set $exclusions 1;
}

if ($exclusions = "0") {
  return 403;
}

我已将403.html放在/var/www/html中,权限为0644。

谢谢。

答案1

您的区块似乎location = /403.html无法访问。如何if在主位置区块中添加条件,就像这样?

location ~ \.php$ {

    if ($exclusions = "0") {
      return 403;
      }
    root          /var/www/app/;
    ...
  }

确保在更改配置文件后重新启动 Nginx 服务器。

答案2

你是指 /etc/nginx/conf.d/www.test.com 吗?我做了这些更改。

如果 ($allowed_country = yes) { 设置 $exclusions 1; }

位置 ~ .php$ {

if ($exclusions = "0") {
return 403;

}

根 /var/www/html/; }

但现在甚至没有封锁受限制的国家。期待快速支持。提前谢谢。

答案3

该问题可能是由自定义错误页面的位置块内的允许所有指令引起的。

您可能想要删除允许所有指令,而使用内部指令来确保该页面只能从 Nginx 内部访问。

location = /403.html {
  root /var/www/html;
  internal;
}

相关内容