【问题标题】:Hosting a Loopback API in IIS using IISNode使用 IISNode 在 IIS 中托管 Loopback API
【发布时间】:2017-09-25 10:27:48
【问题描述】:

我已经使用 Loopback 构建了一个 API。现在是时候在我的 Windows 机器上托管它了,谷歌搜索出现了两个不同的选项:1) 使用 NSSM 创建服务,或 2) 使用 IIS 模块 IISNode 使用 IIS 进程托管 API。由于使用 IIS 的好处似乎太强大而不容忽视,因此我选择了该选项。

环回文档指出 iisnode 可用于托管环回 api,但未能提供有关该主题的任何指导。

iisnode 文档也有一些非常基本的示例,其中一些基于 Express(环回基于此),但没有明确说明如何调整环回应用程序以与 iisnode 一起使用。在他们所有的简单示例中,主节点文件都位于节点项目的根级别。然而,Loopback 将其保留在“~/server/server.js”。这使得不清楚在哪里放置和配置 iisnode 工作所需的 web.config 文件。

是否有人知道使用 iisnode 在 IIS 中托管 Loopback 项目的体面教程或演练?我发现的只是模糊的文章,大意是“嗯……它应该工作”。有没有人使用 iisnode 成功地托管过环回项目?

【问题讨论】:

    标签: node.js iis loopbackjs iisnode


    【解决方案1】:

    确保您遵循这个小检查。 Web 服务器上的环回托管存在一个已知问题(不完全是问题,而是一种保护功能,可能会导致首次部署者绊倒):

    https://github.com/masonkmeyer/loopback-azure

    只有在直接调用 loopback 的 server.js 时才会调用 app.start()。但是像 IIS 这样的网络服务器通常通过要求来调用主脚本。上面建议的解决方案有点不优雅,因为它不能保证 app.start 只有在启动完成设置休息端点后才会被调用。

    否则 web.config 非常简单。以下对我的配置有所帮助: https://tomasz.janczuk.org/2011/08/using-url-rewriting-with-nodejs.html

    【讨论】:

      【解决方案2】:

      我不确定您是否需要特定于 Loopback 的教程来帮助您。你只需要修改你的Web.config

      在您的Web.config 中需要有一个 iisnode 处理程序。这指示 IISNode 哪个文件是项目中的主文件。要将流量定向到您的服务器文件路径,只需更改处理程序上的 path 属性即可。

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

      我为使用 Express 设置 IISNode 应用程序创建了几个不同的演练,但它们实际上适用于使用 IISNode 设置的任何内容。

      【讨论】:

      • 是的,web.config 文件需要指向 Loopback 的主文件。我已经尝试过了,但遗憾的是没有成功。也许是因为我的网站在 IIS 中设置?该站点在顶层有一个通用的登陆 HTML 页面。在该站点中,我创建了一个子目录“Compass”,我希望在该子目录下托管 Loopback API。它位于 web.config 文件所在的“Compass”目录中。根据我阅读的示例以及您引用的示例,子目录似乎是合适的位置。但没有喜悦。我已经验证 iisnode 是一个已安装的模块。但是,今晚我会再试一次。
      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多