你可以在IIS中使用node.js吗?

时间:2011-04-05 01:56:54

标签: windows iis node.js

这可能是一个非常简单的问题,但是我可以在带有IIS的Windows Server 2008环境中使用node.js吗?是否有“Microsoft”库或其他更好的解决方案?

8 个答案:

答案 0 :(得分:5)

当然可以,请查看IISNode Project

答案 1 :(得分:4)

您可以在Windows上安装Node.js,但它是自己的服务器,因此除非您使用IIS作为其代理,否则根本不需要IIS。但请注意,以下引自Node.js's installation instructions

  

[Windows]版本都没有令人满意的稳定,但可以运行一些东西。

答案 2 :(得分:3)

您实际上有两条路径可以通过IIS运行Node.js应用程序。

如果您将整个应用程序专用于Node.js并且只需要面向公众的端点来处理现有的IIS应用程序,我建议使用ARR来路由整个站点。我正在为几个项目做这件事,它运作得相当好。

老实说,我不喜欢IISNode,因为您似乎在节点代码与IIS中建立了外来端点。它有效,如果您特别针对Azure,它可能是您的最佳选择。如果你不得不将它变成现有的.Net应用程序,它也可能是最好的选择。

答案 3 :(得分:2)

我一直在使用带有Cygwin的Windows上的Node并且几乎没有问题。您可以使用IIS在默认端口80上运行,并在不同端口上运行您的Node应用程序。

如果你想代理,那么大多数人都在使用Nginx。

答案 4 :(得分:1)

您可以在Windows上build node.js,但由于可能存在稳定性问题,建议不要使用它。如果IIS使用基于线程的池,那么你甚至不应该将它用作node {js的reverse proxy(基于linux的系统nginx通常用于执行此操作),因为池可能很快就会被完全加载。如果你想在windows上使用类似于node.js的东西,那么你应该尝试查看manos

答案 5 :(得分:1)

设置Windows + IIS + Node.js + Mongodb以构建快速待办事项应用程序的演练

http://www.amazedsaint.com/2011/09/creating-10-minute-todo-listing-app-on.html

答案 6 :(得分:0)

答案 7 :(得分:0)

我想让它变得尽可能简单。

iisnode

的问题
  1. 我安装了iisnode并运行了没有问题的样本,但是......

  2. 我尝试使用iisnode在IIS上部署它,但我必须捆绑我的meteor应用程序,然后将其部署为节点应用程序。我遇到的问题让我气馁。我根本无法安装fibers。编译过程中不断出现错误,所以我放弃了。

  3. 反向代理IIS

    我为此解决的问题是在IIS上使用反向代理。

    see my post on meteor forum

      

    我最后的web.config条目是:

         

    但是,我在IIS上使用反向代理的方式也是如此   域名上的子文件夹让我感激不尽。

         

    我不知道通过使用ROOT_URL我们可以指定一个sub   路径。

         

    例如,如果我在meteor app文件夹中运行以下命令:

         

    set ROOT_URL=http://localhost:3100/n/todos && meteor

         

    我将能够在http://localhost:3100/n/todos访问我的应用,   注意我省略了尾随的 / 。如果我们试图冲浪   地址http://localhost:3100/nhttp://localhost:3100/会   给我们一个错误Unknown path

         

    因此,当我第一次设置反向代理时,我每次都会收到Unknown Path错误。

         

    事实证明,在我的IIS配置中,我必须指定   请http://localhost:3100/n/todos作为操作的网址值   最后注意“n / todos”

         

    所以我的重写规则就这样结束了:[file @   C:/inetpub/wwroot/web.config]

    ```  
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="TODOs meteor app. Route the requests" stopProcessing="true" enabled="true">
              <match url="^n/todos/(.*)" />
              <conditions>
                <add input="{CACHE_URL}" pattern="^(https?)://" />
              </conditions>
              <action type="Rewrite" url="{C:1}://localhost:3100/n/todos/{R:1}" /> <!-- I was missing the /n/todos here -->
              <serverVariables>
                <set name="HTTP_ACCEPT_ENCODING" value="" />
              </serverVariables>
            </rule>
          </rules>
          <outboundRules>
            <rule name="TODOs ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="false">
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://localhost:3100/(.*)" />
              <action type="Rewrite" value="/n/todos/{R:2}" />
            </rule>
            <rule name="TODOs RewriteRelativePaths" preCondition="ResponseIsHtml1" enabled="false">
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" />
              <action type="Rewrite" value="/n/todos/{R:1}" />
            </rule>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
              <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:3100/(.*)" />
              <action type="Rewrite" value="http{R:1}://localhost/{R:2}" />
            </rule>
            <preConditions>
              <preCondition name="ResponseIsHtml1">
                <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
              </preCondition>
            </preConditions>
          </outboundRules>
        </rewrite>
      </system.webServer>
    </configuration>
    ```
    

    由于