NodeJS windows服务器上的主机节点js(iis)

of1yzvn4  于 2023-01-20  发布在  Node.js
关注(0)|答案(3)|浏览(129)

一个月前我开始学习服务器端编码,我使用“express”框架和mssql构建了一个nodejs项目和带有get和post请求的网络服务,我的项目文件包括一个“main.js”文件和一个“node_modules”文件夹。
我试图在IIS上托管这个项目,但没有关于如何做到这一点的想法或经验。
我将不得不以某种方式 Package 我的项目。
我可以在IIS上托管nodejs项目吗?如果可以,那么我需要执行哪些步骤。我有一个运行IIS的Windows服务器,其中安装了mysql。

ehxuflar

ehxuflar1#

下面是一个步骤...
1.如果尚未安装nodeiisnodeurlrewrite,请安装它们
1.添加一个网站到iis

1.编辑主机文件

1.添加你的网址到主机

1.检查你的新网站模块以确保iisnode是安装的

1.如果它在那里你是好的

1.创建节点应用代码JS文件

1.将此代码放入文件中

var express = require("express");
var app = express();
app.get("/", function(req, res) {
  res.send("Hello Worlxxxxd!");
});
// This is REQUIRED for IISNODE to work
app.listen(process.env.PORT, () => {
  console.log("listening");
});

1.添加一个web.config文件到目录中,并将此代码放入其中

<configuration> 
    <system.webServer>
  
     <handlers>
       <add name="iisnode" path="node_app.js" verb="*" modules="iisnode" />
     </handlers>
  
     <rewrite>
       <rules>
         <rule name="nodejs">
           <match url="(.*)" />
           <conditions>
             <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
           </conditions>
           <action type="Rewrite" url="/node_app.js" />
         </rule>
       </rules>
     </rewrite>
  
     <security>
       <requestFiltering>
         <hiddenSegments>
           <add segment="node_modules" />
           <add segment="iisnode" />
         </hiddenSegments>
       </requestFiltering>
     </security>
     </system.webServer> 
 </configuration>

1.在浏览器中导航到新站点,你应该得到这个错误,因为你还没有安装express软件包

1.打开命令提示符并安装express

1.刷新这网页并且瞧

7vhp5slm

7vhp5slm2#

我参加聚会有点晚了,所以你可能已经解决了这个问题,或者走了另一条路。
您可以使用iisnode在IIS内部运行节点应用程序。
我个人在运行iisnode方面成败参半,但这绝对是可能的。

hgb9j2n6

hgb9j2n63#

我建议使用URL重写(https://www.iis.net/downloads/microsoft/url-rewrite)和应用程序请求路由(https://www.iis.net/downloads/microsoft/application-request-routing)IIS模块。请在您的IIS服务器上安装这些模块。
在IIS中创建一个指向节点应用程序运行目录的应用程序(尽管实际上并没有使用此路径!):

在这个新应用程序中,使用反向代理模板创建重写规则,并指向本地服务的节点js应用程序:

现在,您可以使用您配置的IIS应用程序浏览到IIS托管站点,它将显示您的node.js托管站点:

这种方法的主要好处之一是,颁发给IIS的SSL证书可以用于“http”托管的node.js应用程序。

我已经从命令行运行了node.js,但是如果需要,这可以作为一个服务来完成。

相关问题