Javascript 如何使用IIS成功运行节点服务器?
因此,我有一个带有ISS-10的web应用程序,运行在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
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 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