- 至 http://httpd.apache.org/download.cgi 下載 Apache HTTP Server (以 2.2.4 版為例).
- 安裝 Apache HTTP Server.
- 修改 Apache2.2\conf\httpd.conf, 將以下的 # 刪除, 使其在啟動後運作.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#引用Apache的Virtual Hosts設定
Include conf/extra/httpd-vhosts.conf - 編輯 Apache2.2\conf\extra\httpd-vhosts.conf, 如下:
NameVirtualHost *
<VirtualHost *>
ServerName www.example.com
ServerAlias example.com
DocumentRoot C:\Java\Apache2.2\conf
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#Proxy的Pattern, 以下將把"/", 交由 "balancer://iiscluster/"處理
#詳細說明可至: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
ProxyPass / balancer://iiscluster/ stickysession=MYCOOKIE nofailover=On
ProxyPassReverse / balancer://iiscluster
<Proxy balancer://iiscluster>
#load balance的主機URL
#route是load balance的worker name, 及後續要在IIS設定Session ID的參數
#loadfactor是數字1-100的權重, 數字越大loading將越重
BalancerMember http://192.168.1.2 route=node1 loadfactor=1
BalancerMember http://192.168.1.3 route=node2 loadfactor=1
#load balance的方式(byrequests, bytraffic)
ProxySet lbmethod=byrequests
</Proxy>
#加入此設定, 將來可至http://...../balancer-manager/下, 監視load balance的狀態
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost> - 設定 IIS 的 Header:
- 開啟 IIS 管理畫面, 在 [網站] 或其下的 [WebApplication] 點選 [內容].
- 在 [HTTP標頭] 頁籤中, 按下 [自訂HTTP標頭] 的 [新增] 按鈕.
- [自訂標頭名稱] 輸入: "Set-Cookie"
- [自訂標頭值] 輸入: "MYCOOKIE=iiscluster.node1; path=/;"
* 請對照第 4 步 ProxyPass 的 stickysession=MYCOOKIE, 以及 <Proxy> 中的 route=node1, route=node2 分別設定 192.168.1.2與192.168.1.3 的 IIS.
- 開啟 IIS 管理畫面, 在 [網站] 或其下的 [WebApplication] 點選 [內容].
- 重新啟動 IIS 與 Apache.
- 若要 Debug, 可在 <VirtualHost *> 中加入:
LogLevel debug
2007/08/28
[System] 透過Apache的Proxy模組設定IIS的NLB
2007/08/21
[System] 利用[IIS Reverse Proxy]制作跨IIS的WebApplication
環境說明:
- OS: 外部與內部皆為 Windows 2003 Enterprise Server.
- 外部Web Server: IIS6.0, WebApplication (Portal)
- 內部Web Server: IIS6.0, WebApplication (InnerPortal)
建置步驟:
- 至 http://www.saltypickle.com/Home/16 下載 ReverseProxy.
* 我以 ReverseProxy(v1.5).zip (20051101)為例 - 將 ReverseProxy(v1.5).zip 解壓縮後,修改為所需的目錄名 (ex: Portal).
- 將該目錄搬至網站目錄下 (ex: C:\Inetpub\wwwroot).
- IIS 的 WebApplication 設定:
- 開啟 IIS 管理工具, 應可看到網站內有一個尚未成為 WebApplication 的資料夾.
- 在 IIS 管理工具中, 點選該資料夾 –> 滑鼠右鍵 –> 內容.
- 在 [目錄] 頁籤中, 按下右下方的 [建立] 按紐, 將該資料夾建立為 WebApplication.
- 此時, 下方的 [設定] 按鈕為 enable 狀態, 按下 [設定].
- 在 [對應] 頁籤中, 先記下上方 [應用程式副檔名] 中, aspx 的 [aspnet_isapi.dll] 執行檔路徑.
- 按下下方 [萬用字元應用程式對應] 的 [插入] 按紐, [執行檔] 欄位請輸入步驟 5 所記的 [aspnet_isapi.dll] 執行檔路徑, 並取消勾選 [確認該檔案是否存在].
- 步驟 4.1 - 4.6 完成後, 便可一步步按下 [確定] 按紐, 結束 IIS 的設定.
- 修改 Portal 的 Web.config:
- 至剛剛的 Protal 目錄下修改 Web.config, 將 <appSettings> 中的 BackEndSite 改為自己所需的路徑, 例如:
<add key="BackEndSite" value="http://192.168.1.10:7777/InnerPortal" />
- 至剛剛的 Protal 目錄下修改 Web.config, 將 <appSettings> 中的 BackEndSite 改為自己所需的路徑, 例如:
- 將 ICSharpCode.SharpZipLib.dll 組件加入 .Net 的組件快取:
- [系統管理工具] -> [Microsoft .NET Framework 1.1 設定] –> 展開左方 [我的電腦].
- 在 [組件快取] –> 滑鼠右鍵 –> [加入] –> 將 ReverseProxy(v1.5).zip 裡的 ICSharpCode.SharpZipLib.dll 加入.
- 功能測試:
- 在 Asp.Net(C#) 可透過 Request.Url 與 Server.MapPath("."), 分別得知 Request 的 Url 與本 WebApplication 的所在目錄.
- 若測試無誤, Request 的 Url 應顯示外部 Portal 的 Url, Server.MapPath(".") 會顯示內部 InnerPortal 的本機目錄.
2007/05/29
PHP+IIS+MySQL
環境: WindowsXP Professional, IIS5.1, MySQL5.0.x, PHP5.5.2
前置步驟:
設定:
環境變數部分: 新增一個系統變數, 名稱為 PHPRC, 值為 c:\php
以上設定完畢後, 需重開機讓設定生效.
之後可以寫一個測試的 php 檔, 內容為 <?php phpinfo(); ?> .
若設定無誤, 該 php 網頁會顯示此網站的設定, 可檢查 Loaded Configuration File 或 extension_dir 的值是否為目前的設定.
若有設定不符, 可再修改 c:\php\php.ini, 因為有些設定預設是被註解掉, 拿掉分號後並修改儲存此檔案, 重新啟動 IIS 即可生效.
前置步驟:
- 安裝 MySQL.
- 下載 PHP5.5.2 的壓縮檔 (ex:PHP 5.2.2 zip package)
網址: http://www.php.net/downloads.php - 解壓縮至 c:\php
設定:
- IIS部分:
- 新增一個 ISAPI 篩選器:
IIS –> 預設的網站按右鍵 –> 內容 –> ISAPI 篩選器 –> 新增 –> 篩選器名稱任意填, 執行檔選擇 C:\php\php5isapi.dll - 加入 .php 的副檔名處理:
在網站或虛擬目錄上按右鍵 –> 內容 –> 按下右下角的設定按鈕 –> 對應的 Tab 中按下新增 –> 執行檔選 C:\php\php5isapi.dll, 副檔名輸入 .php
- 新增一個 ISAPI 篩選器:
- PHP設定部分:
- 開始 –> 執行 –> 輸入 regedit –> 開啟登錄編輯程式:
- 新增機碼: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5
- 在 HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5 下新增一個字串值: 名稱: IniFilePath, 值: c:\php\
(*此字串值的 c:\php\ , 結尾一定要加 "\", 否則以 phpinfo() 測試時會出現 No input file specified.)
- 修改 c:\php\php.ini, 修改 extension_dir 的值為 c:\php\ext, 將 extension=php_mysql.dll 前的分號 (;) 拿掉(如此才能使用 mysql 的函式庫).
(*將分號刪除即可使用 extension 的函式庫)
- 開始 –> 執行 –> 輸入 regedit –> 開啟登錄編輯程式:
環境變數部分: 新增一個系統變數, 名稱為 PHPRC, 值為 c:\php
以上設定完畢後, 需重開機讓設定生效.
之後可以寫一個測試的 php 檔, 內容為 <?php phpinfo(); ?> .
若設定無誤, 該 php 網頁會顯示此網站的設定, 可檢查 Loaded Configuration File 或 extension_dir 的值是否為目前的設定.
若有設定不符, 可再修改 c:\php\php.ini, 因為有些設定預設是被註解掉, 拿掉分號後並修改儲存此檔案, 重新啟動 IIS 即可生效.
2006/12/04
[Java]Tomcat與IIS的sticky session設定
- 設定IIS:
至 IIS 管理員中 -> 點選安裝了 Tomcat ISAPI 的網站 -> 點選"內容" -> 選擇"主目錄"這個頁籤 -> 按下"設定" -> 選擇"選項"頁籤 -> 取消"啟用作業狀態"這個項目. - 修改 ISAPI 所讀取的 workers.properties 檔:
- 加入以下的內容:
worker.loadbalancer.sticky_session=1 worker.Tomcat1.socket_keepalive=1 worker.Tomcat2.socket_keepalive=1
- mark lbfactor:
#worker.Tomcat1.lbfactor=1
#worker.Tomcat2.lbfactor=2
- 加入以下的內容:
2006/12/01
[Java]Tomcat與Resin的ISAPI NLB設定
- Tomcat: (以 /jsp-examples 為例)
- workers.properties 的內容如下:
#定一個名為 loadbalancer 的 worker, 並將 type 定為 lb(load-balancing)
worker.list = loadbalancer
worker.loadbalancer.type = lb
#設定 loadbalancer 底下的 workers (ex:Tomcat1, Tomcat2)
worker.loadbalancer.balanced_workers = Tomcat1,Tomcat2
#將 Tomcat1 與 Tomcat2 這兩個 worker 的 type 定為 ajp13
worker.Tomcat1.type=ajp13
worker.Tomcat2.type=ajp13
#分別設定 Tomcat1 與 Tomcat2 的 IP, ajp13 的 Port 以及 load-balancing 的 factor
#ajp13 的 Port 值可在 Tomcat 的 server.xml 中找到並修改
# lbfactor 的值越大,表示該 Server 的 loading 越重
worker.Tomcat1.host=192.168.1.10
worker.Tomcat1.port=8009
worker.Tomcat1.lbfactor=1
worker.Tomcat2.host=192.168.1.20
worker.Tomcat2.port=7009
worker.Tomcat2.lbfactor=2
#設定要導至 Tomcat 的 URI
worker.remote.mount=/jsp-examples /jsp-examples/*
- workers.properties 的內容如下:
訂閱:
文章 (Atom)