30

信息:我对 node.JS 很陌生!

我编写了一个示例服务器,可以监听端口 XXXX 上的 http 请求。当我从命令行(Windows)运行此服务器时,它似乎运行良好。它响应在浏览器中打开时对 localhost:XXXX 的请求。

问题:这是应该如何工作的?为了让节点服务器运行,是否应该始终打开一个 CMD 提示符以供服务器侦听请求?我不能用 IISNode 做“某事”吗?

我了解,如果我向 JS 文件发出请求,该文件在 IISNode 中记为 Node.JS 文件,并且 NODE 应该处理它;然后我会让 Node 为我处理请求。但这假设 IIS 是我的 Web 服务器,并且特定请求可以由 Node.js 处理。

我希望我在这里有意义!:)

4

4 回答 4

23

在 Windows 上,您有两种托管 node.js 应用程序的选项:

  1. 就像在 *nix 上一样自托管 node.exe 进程。在开发过程中,您可能只是从命令行启动它。在生产环境中,您希望提出一种机制来提供围绕 node.exe 的进程生命周期管理(例如,在操作系统启动时启动它)。在 Windows 上最合理的做法是使用 Windows 服务(也称为 NT 服务)。可以帮助您执行此操作的组件是http://nssm.cc/
  2. 使用 iisnode ( http://github.com/tjanczuk/iisnode )在 IIS 上托管 node.js。与自托管相比,此方法具有https://github.com/tjanczuk/iisnode/wiki中概述的许多好处。但是您还想探索性能影响(实际上并非所有这些都是坏的):http ://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html 。
于 2013-05-08T18:51:57.127 回答
21

我使用适当的方法解决了它。是的,它是 IISNode。但似乎没有评论回答如何为托管在同一 IIS 上的不同应用程序“运行”app.js(它也为 PHP、ASPX 等提供服务)

步骤 1. 为新的 URL 结构编辑节点应用程序的入口点(通常)app.js。

express 应用程序假定它拥有整个 URL 空间并从根本身启动 URL,如下所示:

默认 EXPRESS App.js

编辑你的 app.js 看起来像下面(但把你的应用程序的目录名而不是“aaspass”!!):


app.js 根据托管在 IIS 上的应用程序的目录结构进行了修改


现在将 web.config 文件放在应用程序的根目录下,如下所示(您可以使用此模板:webconfig)。

再次编辑文件并将名称“aaspass”更改为您的应用程序的目录名称。


修改 We.Config 以添加规则以重定向到相关的 app.js

而已!您可以根据需要为尽可能多的应用程序执行此操作,并将它们托管在同一服务器上。

于 2013-07-16T08:02:28.230 回答
7

什么对我有用:

  1. 安装 IISNode
  2. 安装 IIS 的 URL Rewrite 模块
  3. 在您的 Node.js 应用程序/文件夹中添加 web.config 文件。以下是 web.config 文件的内容:

    在处理程序中,我只需要指向 app.js(应用程序的典型入口点)。我没有更改我的任何路线(无需附加任何文本)。

..

<configuration> 
        <appSettings>
            <add key="NODE_ENV" value="production" />
        </appSettings>
          <system.webServer>



    <handlers>
      <add name="iisnode" path="server/app.js" verb="*" modules="iisnode" />
    </handlers>

     <rewrite>
      <rules>
       <clear />
        <rule name="cdw">
          <match url="/*" />
          <action type="Rewrite" url="server/app.js" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>
于 2015-07-23T08:59:59.877 回答
2

如果您在 Windows 上,您可以(并且可能应该)在 IIS 下运行 Node.js:

http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx

于 2013-05-08T13:32:03.940 回答