IIS實現HTTP和WebSocket服務的反向代理


一.前言

首先我們來聊聊反向代理,所謂的反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

二.舉例

以我遇到的情況為例,我有一個使用.net core開發的控制台應用程序項目,我想使用命令行或者服務來啟動發布好的項目,使用二級域名來訪問,但是問題來了無論我怎么操作都無法將域名跟我的項目綁定,只能綁定IP,我使用的是UseUrls的方法,也不知道是不是我的用法錯了,反正只是作為一個講解的例子,大家不用深究。這個時候我就想到了另一種方式,能不能在訪問二級域名時跳轉到項目綁定的IP端口上呢,而且我返回的結果還得通過二級域名發送出去,這時候我需要一個代理服務器來做這個事,這個代理就是IIS。

三.准備

Windows Server 2008 R2

IIS7

Application Request Routing(IIS插件需要另外安裝,下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=47333

URL Rewrite(IIS插件需要另外安裝,下載地址:https://www.iis.net/downloads/microsoft/url-rewrite

四.開始

第一步、確認IIS上有安裝ARP(Application Request Routing)以及URL Rewrite

第二步、啟動代理:

 

 

 

 

 配置完成后別忘了點應用。

 

第三步、新增反向代理服務器,設置反向代理URL規則

選中IIS中的一個網站,然后點擊URL重寫模塊。在右側點擊【添加規則】--【入站規則】 -- 【空白規則】

 

 

 

 

 

 

 

上圖配置說明:

Name:隨意填寫

Requested URL:選擇"Matches the pattern",匹配模式

Using:選擇“Regular Expressions”,正則表達式匹配

Pattern:填寫^(.*)

Action Type:選擇Rewrite,重寫

Rewrite URL:填寫需要被代理的網站地址,最后加上{R:1}即可,如:http://localhost:5520/{R:1}

最后點擊應用即可。到此為止便完成了HTTP的反向代理。有興趣的朋友可以自己多嘗試,不同端口之間的代理也是可以的。

五.WebSocket的反向代理

websocket的反向代理的方法與HTTP基本一致,就只是在上述的操作中再加一條規則就好了。注意一下,只有IIS8.0以上才支持websocket。

重新添加一條規則,名稱啥的都跟上面一樣我就不重復說了。不同的是下面兩個配置:

Conditions添加兩條規則,匹配模式分別是 (.+)s:// 和 (.*)s://

 

Rewrite URL改為:{C:1}://需要代理的項目地址/{R:1}

 

最后得到以下兩個規則:

 

 

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM