在IIS上运行node

前言

以前本身搞了个域名,而后发现域名默认映射到80端口,腾讯云又没有修改映射端口的功能。而后服务器又是和几个sx一块儿租的,因而只能想办法把发到80端口的请求分配到相应的项目里。当时有两个想法:本身写个中间件和用IIS,最后仍是选了IIS,折腾好以后就没再管。结果最近升级了服务器,从新部署项目的时候发现基本上都忘光了。。因而就简单记录一下步骤。git


iisnode

IIS什么的就很少说了,直接说主要用的东西,iisnode下载地址github

另外还须要安装URL Rewrite
安装iisnode以后,能够用%programfiles%\iisnode\setupsamples.bat来安装一个例子,而后访问http://localhost/node
安装完以后,新建一个站点,监听80端口,配置好本身的域名。web

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="&quot;C:\Program Files\nodejs\node.exe&quot;" 
      interceptor="&quot;C:\Program Files\iisnode\interceptor.js&quot;" 
      promoteServerVars="REMOTE_ADDR"/>
    </system.webServer>
</configuration>

launch.js

由于bin会在url重写时被IIS屏蔽,所以不能直接把url重写到bin/www上,所以须要增长一个中间文件,或者修改bin目录的名字(固然是不推荐的)。
launch.js很简单,只须要require一下bin/www.app

require('./bin/www');

接下来重启站点就能够了。ide

500.19

若是运行的时候出现以下错误:ui

500.19
配置错误 不能在此路径中使用此配置节。若是在父级别上锁定了该节,便会出现这种状况。锁定是默认设置的(overrideModeDefault="Deny"),或者是经过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。url

这时候只要运行%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 其中的handlers是报错的节点名字。.net


嘛,我是到这里就没有问题能够正常运行了。欢迎访问,虽然没有什么东西。

相关文章
相关标签/搜索