iT邦幫忙

0

網站三層式架構的假三層做法請教~

mmnnbb 1 月前6137 瀏覽

我的問題是:

wan(使用者)<->防火牆<-> web(DMZ) <->防火牆 <->AP(intra)<->防火牆<->DB(intra)
例:查詢abc.com會從web導進ap處理

因要使用這個模式來架設網站,
又要在不動程式的情況下完成,且都是win2012主機

目前想到的是web(DMZ)這台架設iis reverse proxy加url rewrite來用,
做導向到AP上的網站查詢或後台管理存取DB,

但是在第一段架設iis reverse proxy加url rewrite就碰上問題了,
GOOGLE了很久看了少少的相關文章,看起來都很簡單,
但都沒有達到我要的方式,我也不知道那裡錯了,所以上來問問有經驗的大大們~

問題:
假設我要查abc.com網址,真正的網站在ap上,
abc.com要由web導向ap,所以abc.com的dns是要指向web這台嗎?
在WEB這台IIS是不是也要架一個空網站呢?
url rewrite的重寫對應要如何寫呢?
原始值是寫abc.com嗎?還是新值寫法是abc.com呢?

我測試原始值是寫abc.com,新值寫123.com或ip,但在url打abc.com是有轉到ap,
但是網址卻由原本的abc.com/test改成123.com/test 或ip/test ,這樣就沒有達到隱藏及proxy的義意吧~

對外代表網址就是abc.com,我是在ap這台上想錯方向嗎?這個對應的用法應該是如何呢?

mmnnbb iT邦新手 5 級 ‧ 1 月前 檢舉
我自己解答了~感謝各位的回覆

1 個回答

5
raytracy
iT邦大神 1 級 ‧ 1 月前
最佳解答

你這樣傳遞 URL 並沒有達到三層的效果...三層的定義至少有:
Presentaion Tier (Web)
Application Tier (AP)
Data Access Tier (DB)
但是你的設計上, 把 Presentation Tier 的工作, 直接 Proxy 給後面的 Application Tier 去做了, 等於沒有拆分開來....

我認為可以這樣修正:

請在 DMZ 上面的 IIS, 開發一個 backend AP, 負責接收前端的需求, 然後把運算要求, 改用 REST 或 XML 的協定 (或是 XMLRPC, SOAP...隨便你), 把運算指令傳遞給後端的 AP Server, 讓他去運算, 最終結果透過前述的協定路徑傳回給 DMZ Web, 然後由 DMZ Web 決定要如何呈現給前端 Client 的 Browser 看.

舉實際的例子:

前端 Client 想看某種報表, 他連進 DMZ Web, 在網頁上填寫報表所要的條件之後, 按下送出鈕, DMZ Web 收到她的條件, 先檢查裡面是否有不合理或惡意的元素? 確認符合製作報表的參數之後, 將所有報表參數, 打包成 REST/XML 格式, 傳遞給後端的 AP Server, 讓 AP Server 負責去撈 DB 的資料, 在 AP Server 內合併出報表的原始資料, 然後將原始資料透過 REST/XML 傳回給 DMZ Web, DMZ Web 再根據這個 Client 的屬性, 權限, 和牠個人喜愛, 輸出針對此 Client 專用的 HTML/CSS/Javascript 給他的 Browser, 呈現出報表的外觀...

如果中間等待 AP 運算的時間太長, 你可能還需要加個 Message Queue 的機制, 避免前端的 DMZ Web 卡死或是 Timeout....

簡單說:
DMZ Web 必須要決定網頁如何呈現? 不是把整串 URL 原封不動丟給後面就沒事; AP Server 只負責商業邏輯和資料內容, 不需要管資料在網頁上呈現的外觀. 如果你把這個網頁呈現的工作 Proxy/Forward 給 AP Server 去做的話, 就變成 AP Server 一個人負擔兩種 Tier 的工作....

看更多先前的回應...收起先前的回應...
mmnnbb iT邦新手 5 級 ‧ 1 月前 檢舉

真是感謝r大神的回復,我知道我的做法是假三層,而我也是要假三層,只是做不起來,DMZ(WEB)就是要用PROXY直接導到AP

raytracy iT邦大神 1 級 ‧ 1 月前 檢舉
mmnnbb iT邦新手 5 級 ‧ 1 月前 檢舉

哈~我原本就有看過~不過還是感謝~現在只剩下唯一的疑問

fillano iT邦超人 1 級 ‧ 1 月前 檢舉

保哥那篇應該就是你要的東西吧,是不是要檢查一下你的設定?

mmnnbb iT邦新手 5 級 ‧ 1 月前 檢舉

保哥那篇我看了不下十遍,照著設,我設好了,但是就感覺像是轉址,而不是proxy的感覺,因為我在外面打abc.com/test 正常顯示應該還是abc.com/test 吧!結果卻顯示成 10.0.0.2/test 找不到網頁,反覆測試現在感覺proxy沒有用,但教學網頁proxy就只有短短的兩個設定及打勾,其它是設url rewrite部份,改來改去都失敗

我要發表回答

立即登入回答