📜  nginx 只允许一个 ip (1)

📅  最后修改于: 2023-12-03 15:17:52.480000             🧑  作者: Mango

Nginx 只允许一个 IP

在某些情况下,你可能希望只允许一个 IP 访问你的 Nginx 服务器。这可以通过 Nginx 的访问控制列表(ACL)配置实现。

步骤
  1. 打开 Nginx 配置文件 (/etc/nginx/nginx.conf)。
  2. http 部分添加以下内容:
http {
    # 只允许 IP 为 192.168.1.100 的主机访问
    geo $single_ip {
        default        0;
        192.168.1.100  1;
    }
    
    server {
        listen       80;
        server_name  example.com;
        
        # 拒绝除 192.168.1.100 以外的所有主机访问
        if ($single_ip = 0) {
            return 403;
        }
        
        # 允许 192.168.1.100 的主机访问
        location / {
            # your configuration ...
        }
    }
}

这样,除了 IP 为 192.168.1.100 的主机,其他主机访问该服务器时会返回一个 403 Forbidden 错误。

解释
  • geo 指令定义了一个名为 $single_ip 的变量,变量值为与客户端 IP 匹配的值。在默认情况下,变量值为 0。
  • server 块中,通过判断 $single_ip 变量的值,如果值为 0,则返回 403 Forbidden 错误,否则允许访问。
  • location 指令用于配置具体的请求路由。
注意事项
  • 以上配置只能针对单个 server 进行限制,如果你有多个 server,需要在每个 server 中配置。
  • 注意防止伪造 IP。
总结

通过以上配置,我们可以成功限制只允许一个 IP 访问 Nginx 服务器。如果你希望允许多个 IP 访问,可以通过在 geo 指令中添加多个 IP 地址实现。