顯示具有 IIS 標籤的文章。 顯示所有文章
顯示具有 IIS 標籤的文章。 顯示所有文章

2009年10月21日 星期三

如何讓IIS及其它web服務於一台伺服器上和平共處

本部份主要是針對IIS在啟動時是獨佔了0.0.0.0:80的狀態,因此在Windows平台上安裝了IIS之後
就無法再透過Apache(或其它的web service)去提供Web服務,若公司有兩種不同需求的Web服務
主機也有不足的問題,那麼我們該如何處理呢?

本文分以Windows 2008及Windows 2003分段討論,可透過下面的連結快速的連結到指定的OS版本的作法:

首先,我們先說明一下,在這個環境之下的需求:
1.一台web server上掛有兩個網路及不同的兩個IP
2.分配IP 10.10.10.1給Aache
3.指定IIS使用192.168.1.241

Windows 2008系列含R2

Windows 2008已經將httpcfg攻能以netsh取代了它的工能,並且內建於windows 2008之中,因此不需要另外進行安裝
欲將IIS 7.0(7.5)等指定成為只服務在單一的網卡上,這個部份就變的非常的簡單了,只需要一個簡單的指令即可:

首先我們先看一下,現在的80port是指定在那個IP,以netstat -na來進行查覽一下,可以看到80port是服務在0.0.0.0
未命名 - 8

1.首先於指令模式之中輸入netsh
2.於netsh>後輸入http(代表設定http的設定值)
3.接下來我們將現在IIS到底在那一個IP上做服務,輸入show iplisten(空白代表0.0.0.0)
4.接下來指定192.168.1.241指定為IIS服務聽取的IP,輸入add iplisten 192.168.1.241
5.我們再度的輸入show iplisten來看一下是不是成功的指定了
未命名 - 4

接下來將w3svc(web服務)重新的啟動,輸入net stop w3svc及net start w3svc
未命名 - 5

再次的以netstat -na來檢查一下,可以由下圖發現80port的服務已經被指定到192.168.1.241了,完成…!
未命名 - 7

Windows 2003系列含R2

由於Web service集中於Web伺服器上,因此為了解決IIS能與Apache相容,並且能IIS及其它web服務安裝於指定IP
並只針對指定IP聽取指定服務,必須透過安裝進階管理套件設定IIS http協定只聽取指定IP,而主機所有網卡(0.0.0.0:80)。

安裝進階管理套件

進階管理套件必須使用windows server 2003第一片光碟片,當您置入光碟片後會出現下列視窗,請直接點選『執行其它工作』。

未命名 - 12

選擇『瀏覽此CD』

未命名 - 13

在瀏覽CD的目錄下請點選SUPPORT目錄,並且進入該目錄中。
未命名 - 14

進入SUPPORT目錄後,請再點選TOOLS目錄
未命名 - 15

請於TOOLS目錄中執行SUPTOOLS.MSI,以開始安裝進階管理工具。
未命名 - 16

請在安裝精靈下直接點選『下一步』。
未命名 - 17

請點選I Agree後,點選下一步。
未命名 - 18

輸入好相關名稱及組織單位名稱,接下來點選下一步。
未命名 - 19

依照預設值進行安裝,並點選install now,進行安裝。
未命名 - 20
未命名 - 21

安裝完成後,按下finish以結束本工具的安裝程序。
未命名 - 22

設定http聽取指定IP

在安裝好進階管理套件後,請直接點選開始列->執行,並且於執行功能中輸入”cmd”以啟動指令模式。
未命名 - 24
未命名 - 25

接下來共分為三個步驟:設定聽取IP,確認設定,重新啟動http協定。
首先我們先來看一下原本的80 Port是指派給0.0.0.0
未命名 - 2

接下來於指令列輸入:httpcfg set iplisten -i 192.168.1.241
接下來請輸入httpcfg query iplisten,來檢查是否有列出設定聽取的IP
緊接著輸入net stop http /y,停止http服務
再輸入net start w3svc,重新啟動http服務
未命名 - 4

完成上述設定後,可以透過netstat –na來檢視80埠由192.168.1.241聽取服務
未命名 - 27

2009年4月21日 星期二

如何設定IIS自動由http(TCP80)轉址至https(TCP443)

Jason日前曾因為客戶要求,只有一個網址,不會再開其它站台,必須在單一個網址列中自動的轉進https
以保護使用者資料傳遞,但不需進到https的頁面則必須自動再轉回來
針對這種單獨幾頁的網頁必須轉進https中,Jason搜遍網海甚至求拜過「谷歌帝君」

找到的都只有Apache設定,也因此讓程式部門的同仁針對相對路徑及絕對路徑修改MaterPage,但都必須從程式端來修改。

有什麼方法可以由設定IIS,或者是透過更快速的方法,可以免除掉修改程式的麻煩事呢?
Jason曾幹過很蠢的事,就是針對每一頁必須自動轉進https的頁面

在站台中另外寫轉址的頁面,並且將該頁設定進IIS中
也就是土法煉鋼的方法,有一頁設定一頁,有兩頁設定兩頁,有n頁呢???
設到腦漿噴出來為止,而且,每一頁都必須透過自定Error Page設定指定的檔案來轉址,太累了!!!

突然有一天…Jason做夢,夢到一個化整為零的方法
即然可針對每個個別的頁面來設定,為什麼不試試直接換掉協定就好呢?

即然可以針對別個網頁,就可以針對加上https通道並且必須以128bit加密的內容
自動由403.4的error page中轉進https協定中即可。

1.首先於"C:\WINDOWS\Help\iisHelp\common\"中編輯403-4.htm頁面
2.在<head>內 插入下列的scirpt

3.將檔案存檔後,以http進入至指定的頁面,即可直接轉置進到https。

<head>
<script type="text/javascript">
var url=window.location.href;
url=url.replace("http:","https:")
window.location.replace(url)
</script>
</head>

以上希望對大眾使用IIS的網友們有幫助。