乙個url訪問控制的iRules

2021-09-21 08:40:24 字數 1099 閱讀 4904

需求:有一台伺服器需要在ltm上面對映乙個位址,並且控制僅訪問其某乙個目錄,不能訪問其他目錄。

環境:ltm以旁路方式部署,配置vip時必須使用snat。

分析一:

由於只有一台伺服器,所以簡單分析就是針對該vip的訪問直接跳轉到該伺服器的這個頁面url,並且可以不用呼叫pool。

所以配置如下:

virtual url_80_vs

rule rd2url_irule

}測試一:

配置完成後在外網本機(12.1.1.1)進行測試,發現始終訪問不到該url。從ie上看出已經進行了跳轉,但是在伺服器上tcpdump發現竟然是源位址竟然是12.1.1.1,而不是ltm的snat後的位址。也就是說ltm根本就沒有執行snat動作,而是直接進行跳轉。如此分析後,修改了一下irule如下:

rule rd2url_irule

}如此進行測試依然不能進行訪問。而後得出結論:ltm在進行http的跳轉如果不呼叫pool的話是不會進行snat動作的。

分析二:

於是換乙個思路進行分析:

要讓該vip呼叫pool,從而執行snat動作。而只允許訪問某乙個url頁面,那irule寫成這樣即可了:

rule rd2url_irule }}

並且在virtual上新增相應的pool。

測試二:

然後進行測試,發現訪問是正常了,其他需求的都能滿足了,但是其中的卻顯示不出來,全是x。這點需要諮詢廠商。

分析三:

在irule中很少使用not的,所以我再換乙個irule試試:

rule rd2url_irule

elseif }}

virtual的配置不變。

測試三:

這下完全正常了,訪問控制的需求也滿足了,也能正常顯示。但是完全是根據該url不是test.php打頭來編制的,也就是說有其他的基於test.php的url需要放通別人訪問的話就又要新增reject的rule了。

總結:1,ltm在進行http的跳轉如果不呼叫pool的話是不會進行snat動作的;

2,在irule中使用not進行判斷時,顯示不出來;這點需要諮詢技術達人;

3,在明確需求後,分析問題應該多元化,不能拘泥於一種思路。

乙個url完整的訪問過程

乙個url完整的訪問過程 iii.資源路徑 question 554991 如果網路位址不是ip位址通過dns網域名稱解析將該系統解析成ip位址 a 開啟瀏覽器,輸入乙個網域名稱 電腦會發出乙個dns請求到本地的伺服器,本地dns服務一般都是你的 網路接入服務商提供,b 查詢www.163.com ...

乙個Restful Api的訪問控制方法

分類 演算法研究 最近在做的兩個專案,都需要使用restful api,介面的安全性和訪問控制便成為乙個問題,看了一下別家的api訪問控制辦法。1 api請求 url 的後面加上乙個accesstoken 2 http頭裡面加乙個欄位accesstoken 1 為每個應用頒發乙個賬號 user 和密...

訪問URL時傳入另乙個URL作為引數

原文 這種情況下,d 4 這個引數會被當做是訪問 login.html 時的引數,而不是 device.html 的引數。解決辦法 對url 引數內容進行加碼,如下 後端獲取的時候再使用 unescape 進行解碼,就能拿到完整的路徑及引數了 but,對於已經發布版本的專案來說,不能修改後端 咋整?...