Security 针对某些国家/地区的Nginx闭塞邮政

Security 针对某些国家/地区的Nginx闭塞邮政,security,nginx,geoip,Security,Nginx,Geoip,我有一个反向代理nginx到tomcat 我的目标是禁止完全进入某些国家,并禁止除一个国家以外的所有国家的邮政 某些国家的全面访问禁令可以通过内核级的iptables实现。这是一项容易的任务 我的困境是,除了一个国家,我如何禁止所有国家的帖子。其他人可以查看网站(GET),但我不希望他们创建帐户或发布数据 我可以通过列出所有使用post的表单进行筛选,但是太多了 有没有办法只使用nginx post进行过滤 多谢各位 geo $ip_country { ranges; default z

我有一个反向代理nginx到tomcat

我的目标是禁止完全进入某些国家,并禁止除一个国家以外的所有国家的邮政

某些国家的全面访问禁令可以通过内核级的iptables实现。这是一项容易的任务

我的困境是,除了一个国家,我如何禁止所有国家的帖子。其他人可以查看网站(GET),但我不希望他们创建帐户或发布数据

我可以通过列出所有使用post的表单进行筛选,但是太多了

有没有办法只使用nginx post进行过滤

多谢各位

geo $ip_country {
  ranges;
  default zz;
  include /usr/local/nginx/conf/ip_country.conf;
}

set $method_country $request_method$ip_country;
if ($method_country ~ "POST(?!au)") {
    return 405;
}
ip_country.conf格式,如:

0.0.0.0-0.255.255.255 eu;
1.0.0.0-1.0.0.255     au;
1.0.1.0-1.0.3.255     cn;
1.0.4.0-1.0.7.255     au;
1.0.8.0-1.0.15.255    cn;
1.0.16.0-1.0.31.255   jp;
1.0.32.0-1.0.63.255   cn;
1.0.64.0-1.0.127.255  jp;
1.0.128.0-1.0.255.255 th;
1.1.0.0-1.1.0.255     cn;
...
您可以在脚本中使用
$ip\u country
值,包括:

fastcgi_param IP_COUNTRY $ip_country;

Tnx!今晚我会实施它!为此干杯因为某些原因nginx不喜欢你的if子句。我用一个非常丑陋的东西替换了它:#GEO-if($request\u method=POST){set$test P;}if($ip\u-country!=au){set$test“${test}C”}if($test=PC){return 405;}Sry,我已经用
set$method\u-country$request\u-method$ip\u-country纠正了这个错误如果国家名称有多个可能的有效值和/或有效值中有空格,
if
行会是什么样子?回答我自己的问题:
if($method_country~“POST(?(ca | us | value with spaces)){