首页 > 解决方案 > 白名单允许特定请求 Nginx

问题描述

我有一个服务器,前面有一个 Nginx。有很多请求,其中一些包含特殊的单词示例:

/posts/men/clouths

我也有一个白名单 ip 文件。我想在 Nginx 中编写一条规则,如果请求包含“ men ”,则仅当请求者的 ip 在白名单文件中时才允许请求。如果 requests 不包含“ men ”,则无论如何都允许该请求。

标签: nginxwhitelist

解决方案


完毕

http {
    ## load whitelist
      map $remote_addr $deny {
        default 0;
        include /path/to/whitelist.txt;
}

server{
    ## check
    set $is_white_list 0;
    if ($request_uri ~ ".*men.*"){
      set $is_white_list 1;
    }
    if ($deny) { 
      set $is_white_list 1$is_white_list;
    }
    if ($is_white_list = 1) {
      return 403;
    }
    ##// epg check
}

推荐阅读