0

我有一个反向代理 nginx 到 tomcat。

我的目标是禁止对某些国家/地区的完全访问,并禁止除一个国家/地区以外的所有国家/地区的 POST。

某些国家/地区的完全访问禁令可以通过内核级别的 iptables 实现。这是一项简单的任务。

我的困境是我如何只禁止除一个国家以外的所有国家/地区的 POST。他们中的其他人可以看到网站 (GET),但我不希望他们创建帐户或发布数据。

我可以通过列出所有使用帖子但太多的表单来过滤。

有什么方法可以只用 nginx 过滤帖子吗?

谢谢

4

1 回答 1

1
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_country在脚本中使用 value :

fastcgi_param IP_COUNTRY $ip_country;
于 2013-05-13T01:35:57.287 回答