nginx對訪問路徑進行限制【部分介面可以內外網訪問、剩餘介面只可以內網訪問】

小羊小恩發表於2024-07-16
前言
最近這段時間的專案被查出了安全漏洞、然後做了一些安全措施的整改。整改後、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、後面重新進來請求又可以了。被坑了一波。。。
反思反思!!!!!




相關文章