平均堆栈安装在端口80或iis下

我有一个平均堆栈应用程序,现在在Node Js和端口3000上工作。我有一个Windows Server 2016,我需要部署.Net应用程序,所以我需要IIS。 我不能使端口80上运行两个Web服务器,但我不希望用户被迫input运行我的意思应用程序的端口。 我试图与iisnode合作,但没有成功,我还阅读了有关反向代理为了将端口80上的请求redirect到另一个端口。 这两个解决scheme都可以是有效的,但是,在将其他时间花在错误的方向上之前,我会问在这种情况下最好的做法是什么。

更新:向前一步。 我现在可以访问应用程序的加载页面,但是应用程序找不到我的bundle.js(由Webpack创build的包)。

module.exports = webpackMerge.smart(commonConfig, { entry: { 'app': './assets/app/main.aot.ts' }, output: { path: path.resolve(__dirname + '/public/js/app'), filename: 'bundle.js', publicPath: '/js/app/', chunkFilename: '[id].[hash].chunk.js' }, 

我的web.config是:

 <configuration> <system.webServer> <handlers> <add name="iisnode" path="start.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="tep"> <match url="/*" /> <action type="Rewrite" url="start.js" /> </rule> </rules> </rewrite> <security> <requestFiltering> <hiddenSegments> <add segment="node_modules" /> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration> 

start.js文件的摘录:

 var app = require('./app'); var debug = require('debug')('node-rest:server'); var http = require('http'); var port = normalizePort(process.env.PORT || '3000'); app.set('port', port); var server = http.createServer(app); server.listen(port); server.on('error', onError); server.on('listening', onListening); 

和视图(hbs):

 <!DOCTYPE html> <html> <head> <base href="/tep"> <title>Tennis Events Pro</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> </head> <body> <tep-app>Loading...</tep-app> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="/tep/bundle.js"></script> </body> </html> 

我曾围绕调整configuration和path,没有结果…

谢谢

马克斯

反向代理与IIS的ARR模块将最好的方式来实现你想要的。

  1. 您需要为IIS安装URL重写和ARR模块
  2. 启用ARR。 在“ Application Request Routing页面上,selectEnable proxy
  3. 在IISpipe理器中创build网站
  4. 在这个网站文件夹中创buildweb.config

    <?xml version="1.0" encoding="UTF-8"?><configuration>

     <system.webServer> <rewrite> <rules> <rule name="rewrite to 3000" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://127.0.0.1:3000/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> 

    </configuration>

在这之后,IIS将代理您的请求到端口3000