要在Nginx中禁止国外的访问,可以使用GeoIP模块来限制特定地区或国家的访问。

首先,确保已经安装了GeoIP库和相应的数据文件。然后按照以下步骤进行配置:

打开 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf)并添加以下内容到 http {} 部分:
http {
    ...

    geoip_country /path/to/geoip-database/GeoIP.dat;
}
将 /path/to/geoip-database/ 替换为 GeoIP 数据库所在路径。

接下来,创建一个新的 location 块来处理被禁止的国外 IP 地址。在 server {} 部分添加如下代码:
server {
    ...

    location / {
        if ($allowed = no) {
            return 403;
        }

        # 其他配置项...
    }
}
这里我们使用 if 指令来判断 $allowed 变量的值是否等于 "no",如果是则返回 403 Forbidden 错误页面。

最后,需要根据 GeoIP 数据库设置 $allowed 变量的值。在 server {} 部分添加如下代码:
server {
    ...

    set $allowed yes;

    if (-f $request_filename) {
        break;
    }

    include /usr/share/nginx/modules/ngx_http_geoip_module/ngx_http_geoip_module.c;

    if (($allowed = no)) {
        rewrite ^/(.*)$ /forbidden.html last;
    }
}
上述代码会根据客户端的 IP 地址查询 GeoIP 数据库,并将结果存储在 $allowed 变量中。如果该变量的值为 "yes",表示允许网络错误,请检查网络状态