前言
之前自己搞了個域名,然后發現域名默認映射到80端口,騰訊雲又沒有修改映射端口的功能。然后服務器又是和幾個sx一起租的,於是只能想辦法把發到80端口的請求分配到相應的項目里。當時有兩個想法:自己寫個中間件和用IIS,最后還是選了IIS,折騰好之后就沒再管。結果最近升級了服務器,重新部署項目的時候發現基本上都忘光了。。於是就簡單記錄一下步驟。
iisnode
IIS什么的就不多說了,直接說主要用的東西,iisnode。下載地址。
另外還需要安裝URL Rewrite。
安裝iisnode之后,可以用%programfiles%\iisnode\setupsamples.bat
來安裝一個例子,然后訪問http://localhost/node
。
安裝完之后,新建一個站點,監聽80端口,配置好自己的域名。
web.config
web.config配置可以參考github中samples中的configuration.
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="launch.js" verb="*" modules="iisnode" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<rewrite>
<rules>
<rule name="all">
<match url="/*" />
<action type="Rewrite" url="launch.js" />
</rule>
</rules>
</rewrite>
<iisnode
nodeProcessCommandLine=""C:\Program Files\nodejs\node.exe""
interceptor=""C:\Program Files\iisnode\interceptor.js""
promoteServerVars="REMOTE_ADDR"/>
</system.webServer>
</configuration>
launch.js
因為bin
會在url重寫時被IIS屏蔽,因此不能直接把url重寫到bin/www
上,因此需要增加一個中間文件,或者修改bin
目錄的名字(當然是不推薦的)。
launch.js很簡單,只需要require一下bin/www
.
require('./bin/www');
接下來重啟站點就可以了。
500.19
如果運行的時候出現如下錯誤:
500.19
配置錯誤 不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定是默認設置的(overrideModeDefault="Deny"),或者是通過包含 overrideMode="Deny" 或舊有的 allowOverride="false" 的位置標記明確設置的。
這時候只要運行%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
其中的handlers是報錯的節點名字。
嘛,我是到這里就沒有問題可以正常運行了。歡迎訪問,雖然沒有什么東西。