Javascript 如何使用IIS成功运行节点服务器?

Javascript 如何使用IIS成功运行节点服务器?,javascript,node.js,port,reverse-proxy,iis-10,Javascript,Node.js,Port,Reverse Proxy,Iis 10,因此,我有一个带有ISS-10的web应用程序,运行在www.mymindmapper.com上,并监听端口:80。我有两个简单的页面(login.html®ister.html)。下面是它的外观: 我的主要目标是尝试并找出如何在IIS上使用我的webApp创建一个节点JS服务器(端口:81),该应用程序位于端口:80。这是我的app.js文件: //USE `nodemon scripts/server.js` on Terminal to refresh Node Server on

因此,我有一个带有ISS-10的web应用程序,运行在
www.mymindmapper.com
上,并监听
端口:80
。我有两个简单的页面(
login.html
&
register.html
)。下面是它的外观:

我的主要目标是尝试并找出如何在IIS上使用我的webApp创建一个节点JS服务器(
端口:81
),该应用程序位于
端口:80
。这是我的
app.js
文件:

//USE `nodemon scripts/server.js` on Terminal to refresh Node Server on File Save.
//USE 'pm2 start scripts/server.js' on Terminal to start pm2 for IIS ??????????????????

//Import Node JS modules
const express = require("express");
const morgan = require("morgan"); 
const mysql = require("mysql");

//Create a new instance of express()
const app = express();

//GET INFORMATION ABOUT THE SERVER REQUESTS (OS, Browser, time, Internal Errors, Status Codes)
app.use(morgan('short')); //'short', 'combined'

//Require files from folder public     (THIS CONTAINS ALL .html files inc. login.html and register.html)
app.use(express.static('./public'));

//Listen on PORT:80 with a callback function
app.listen(81, ()=>{
    console.log("Server running on port 81");
});

请注意,当我在VisualStudio代码上通过终端发出请求时,一切都按预期进行。可以从我的数据库中添加/删除数据。(我使用
XAMPP
-Apache监听
端口:80
,mMySQL监听
端口:3306

我在某个地方读到,这可以通过IIS上的
反向代理解决。然而,这似乎不起作用。另外,当进行反向代理配置时,刷新页面时会发生以下错误


伙计,不需要设置出站规则。您编写的上述设置足以将IIS请求转发到节点服务器。

在应用程序请求路由中,启用代理功能。

Index.js

var express=require('express');
var app=express();
app.get('/',function(req,res){
    res.send('Hello World');
})
app.listen(3000,function(){
    console.log("Example app listening on port 3000!");
})
我的IIS站点绑定。

结果。

添加反向代理规则将生成包含以下内容的
webconfig
文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:3000/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

此外,如果您在
服务器场
中创建了服务器场,请将其删除或添加本地IP作为默认服务器。否则,将出现无法连接到服务器的错误。

请随时告诉我问题是否仍然存在。

我有一个站点在IIS上运行NodeJS,我们使用IIS Node来管理它:我没有设置该站点,因此我不是100%了解配置。在这个问题的不同点上,您声称IIS在端口80上运行,Apache在端口80上运行。是哪一个?您正在处理多台计算机吗?您是否在这两个服务器上运行了节点应用程序?@AdrianJ.Moreno,谢谢。“我去看看。”昆汀谢谢你的回答。不,只有一台电脑。我不知道这是怎么回事。当我转到
localhost:80
时,会加载XAMPP欢迎页面,当我尝试
mymindmapper.com
时,会加载我的Web应用程序。这也可以同时工作。@AdrianJ.Moreno我刚刚在IIS中检查了我的Web应用程序上的模块,
iisnode
不存在。这是我想包括的吗?谢谢你的回复。我发现应用程序请求路由3.0扩展没有安装,所以我已经修复了它。我已将我的app.js更改为在
端口3000上侦听,并创建了一个新的无边界反向代理(我已删除了另外2个)。当我安装应用程序请求路由时,代理功能已经启用,并将绑定更改为“所有未分配”,它工作得非常好。你是上帝,我的朋友D