我有一个反向代理nginx到tomcat。
我的目标是禁止对某些国家/地区进行全面访问,并禁止所有国家/地区使用POST。
某些国家/地区的总访问禁令可以通过内核级别的iptables实现。这是一项简单的任务。
我的困境是我如何禁止除一个国家以外的所有国家的POST。其余的人可以看到网站(GET),但我不希望他们创建帐户或发布数据。
我可以通过列出所有使用post的表单来过滤,但是太多了。
有没有办法过滤nginx只发帖?
谢谢
答案 0 :(得分: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
值:
fastcgi_param IP_COUNTRY $ip_country;