日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

在IIS7中應(yīng)用Application Request Routing配置反向代理_Web服務(wù)器教程

編輯Tag賺U幣
    在配置web服務(wù)器的時(shí)候,我們經(jīng)常遇到這樣的問(wèn)題,由于某些原因,該服務(wù)器只能擁有一個(gè)公網(wǎng)IP,但是可能需要提供其他機(jī)器或者本機(jī)上其他webserver的服務(wù)器給訪問(wèn)者,同時(shí)又不希望使用其他端口,如果在linux下,常見的解決方案是使用nginx作為前端server,通過(guò)反向代理間接訪問(wèn)其他webserver.在IIS7之前,在windows上要實(shí)現(xiàn)該功能卻不是一件容易的事情,但是在IIS7上,通過(guò)Application Request Routing模塊,我們可以輕松實(shí)現(xiàn)反向代理.
    本次測(cè)試配置的情況,簡(jiǎn)單起見,只在iis中測(cè)試,配置3個(gè)網(wǎng)站,第一個(gè)”LevenWeb”,使用80端口提供服務(wù),第二個(gè)”levenblog”,下面運(yùn)行著levenblog2.0.9,使用8080端口,第三個(gè)”phpweb”,下面有一個(gè)”test.php”的phpinfo頁(yè)面(iis7 php配置本文不再詳述),本機(jī)ip:192.168.1.8,為了測(cè)試,我們先進(jìn)行域名綁定,也就是在leven.com.cn下新增3個(gè)子域名,域名綁定如下圖所示:
    我們的目標(biāo)如下:
    http://phpweb.leven.com.cn/ 訪問(wèn)phpweb站點(diǎn),也就是http://localhost:8081/
    http://levenblog.leven.com.cn/ 訪問(wèn)levenblog站點(diǎn),也就是http://localhost:8080/
    http://realblog.leven.com.cn/ 訪問(wèn)公網(wǎng)上的levenblog站點(diǎn),也就是http://leven.com.cn/
    http://localhost/leven 訪問(wèn)levenblog站點(diǎn),也就是http://leven.com.cn/
    首先前往http://www.iis.net/extensions/ApplicationRequestRouting下載Application Request Routing,然后安裝,本次實(shí)踐使用的是V2版.
    安裝完畢之后,新建3個(gè)站點(diǎn):
然后找到ARR配置菜單:
開啟Proxy項(xiàng):
    然后在levenweb站點(diǎn)下配置反向代理路由,配置可以使用UI界面或者直接修改web.config的模式,本次配置給出ui和config文件兩種方式,個(gè)人更喜歡config配置文件模式.

    進(jìn)入該項(xiàng),先配置第一項(xiàng), http://phpweb.leven.com.cn/ 訪問(wèn)phpweb站點(diǎn),也就是http://localhost:8081/,選擇”Add Rules...”:
    然后選擇”Blank Rule”
    然后填寫如下:
    該參數(shù)設(shè)置表面ARR將攔截所有請(qǐng)求
    繼續(xù)在”Conditions”中選擇”Add”:
    該設(shè)置表面只有HTTP_HOST為phpweb.leven.com.cn的URL才能通過(guò)該規(guī)則,如果您綁定了多個(gè)域名,可以根據(jù)多次增加或者通過(guò)正則表達(dá)式的|來(lái)間隔
    最后在下面的Action中配置代理路徑:
    在這兒,{R:1}代表了MatchUrl中的第一個(gè)匹配括號(hào)
    同樣配置的web.config文件如下:
      <rewrite>
        <rules>
          <rule name="phpweb">
            <match url="^(.*)" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^phpweb.leven.com.cn$" />
            </conditions>
            <action type="Rewrite" url="http://localhost:8081/{R:1}" />
          </rule>
        </rules>
      </rewrite>
 
    測(cè)試訪問(wèn)http://phpweb.leven.com.cn/test.php,結(jié)果如下:
    下面同樣可以配置levenblog.leven.com.cn和realblog.leven.com.cn
    Ui界面配置不再說(shuō)明,配置完成的web.config如下:
 
      <rewrite>
        <rules>
          <rule name="levenblog">
            <match url="^(.*)" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^levenblog.leven.com.cn$" />
            </conditions>
            <action type="Rewrite" url="http://localhost:8080/{R:1}" />
          </rule>
          <rule name="realblog">
            <match url="^(.*)" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^realblog.leven.com.cn$" />
            </conditions>
            <action type="Rewrite" url="http://leven.com.cn/{R:1}" />
          </rule>
          <rule name="phpweb">
            <match url="^(.*)" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^phpweb.leven.com.cn$" />
            </conditions>
            <action type="Rewrite" url="http://localhost:8081/{R:1}" />
          </rule>
        </rules>
      </rewrite>
 
    訪問(wèn)結(jié)果分別為:

    我們?cè)偬砑幼詈笠豁?xiàng),將http://localhost/leven代理到 http://leven.com.cn/
 
          <rule name="leven.com.cn">
            <match url="^leven/(.*)" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^localhost$" />
            </conditions>
            <action type="Rewrite" url="http://leven.com.cn/{R:1}" />
          </rule>
 
    但是此時(shí)訪問(wèn)會(huì)出現(xiàn)問(wèn)題,如下圖:
    顯然,出現(xiàn)了css丟失等情況,通過(guò)查看源碼:
    可以看到css的路徑有誤,不僅如此,所有的img,a標(biāo)簽路徑全部出現(xiàn)了錯(cuò)誤,代理之后的地址是/leven/xxx的,但是源地址仍然是/xxx,因此我們還需要增加一個(gè)Outbound Rule
    配置好的config文件如下:
 
        <outboundRules>
          <rule name="Add application prefix">
            <match filterByTags="A,Img,Script,Link" pattern="^/(.*)" />
            <conditions>
              <add input="{URL}" pattern="^/leven/.*" />
            </conditions>
            <action type="Rewrite" value="/leven/{R:1}" />
          </rule>
        </outboundRules>
 
    然后刷新:
 


 
    可見路徑正確.
    在使用了反向代理之后,編程上也有些地方需要注意了,在取客戶端IP的時(shí)候,由于多了一層代理,直接是無(wú)法獲取的,因此,我們需要開啟

    然后通過(guò)獲取Header中的X-Forworded-For字段來(lái)取得客戶端IP
    從測(cè)試來(lái)看,ARR是個(gè)非常有用的代理模塊,能完全滿足我們反向代理的需求,不僅如此,ARR還提供了UrlRewrite,ServerFarms,Cache等很多功能,很是值得我們挖掘.

來(lái)源:網(wǎng)絡(luò)搜集//所屬分類:Web服務(wù)器教程/更新時(shí)間:2011-12-08
相關(guān)Web服務(wù)器教程