nginx对访问路径进行限制【部分接口可以内外网访问、剩余接口只可以内网访问】

前言
    最近这段时间的项目被查出了安全漏洞、然后做了一些安全措施的整改。整改后、BOSS又提了个很有意思的思路。
  •     涉及到小程序端的请求接口、内外网都可以访问。
  •     涉及到后台管理的请求接口、只允许内网访问。

开干开干
   由于项目引进了gateway网关、一开始的时候。我陷入了误区、一股脑想着在gateway的location里面做判断。
   看图
  

   然后加了各种if限制。发现还是会走后面的判断。
  

location /******-gateway {
    # 其他配置 ...

    # 定义允许内外网访问的路径模式
    if ($request_uri ~* "^/sys/(wx)/.*") {
        proxy_pass http://127.0.0.1:端口; 
    }

    # 默认情况下,只允许特定内网IP访问
    if ($remote_addr != "指定IP") {
        return 403;
    }
    # 默认代理
    proxy_pass http://127.0.0.1:端口; 
}

最后拆分成了两个 location

# 外网可访问的特定路径
        location ~* ^/**-gateway/sys/(wx)/ {
          proxy_pass http://127.0.0.1:端口;
        }
        

        # 网关-gateway
        location /****-gateway {
            
                # 默认情况下,其余接口只能通过内网访问
                if ($remote_addr != "指定IP") {
                    return 403;
                }
                # 如果通过了上面的检查,代理请求到后端服务
                proxy_pass http://127.0.0.1:端口;
        }

1.花了几个小时、一直在问GPT。。。
2.手机有缓存、、、一直提示403、后面重新进来请求又可以了。被坑了一波。。。
反思反思!!!!!


   



posted @ 2024-07-16 10:41  小羊小恩  阅读(117)  评论(0编辑  收藏  举报