一.前言
首先我們來聊聊反向代理,所謂的反向代理(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}
最后得到以下兩個規則:
以上。