簡體   English   中英

Nginx阻止某些國家/地區的POST

[英]Nginx block POST for certain countries

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

我的目標是禁止對某些國家/地區的全部訪問,並對除一個國家以外的所有國家/地區禁止POST。

某些國家/地區的總訪問禁令可以通過內核級別的iptables實現。 這是一件容易的事。

我的困境是我如何禁止除一個國家以外的所有國家/地區的POST。 他們中的其他人可以看到網站(GET),但是我不希望他們創建帳戶或發布數據。

我可以通過列出所有使用post的表格進行篩選,但是表格太多了。

有什么辦法可以只使用nginx進行過濾?

謝謝

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM