我有一个Mean堆栈应用程序,现在可以在Node Js和端口3000上运行。 我有一个Windows Server 2016,我需要部署.Net Apps,所以我需要IIS。 我无法在端口80上运行两个Web服务器,但我不希望用户被迫键入运行我的Mean应用程序的端口。 我尝试使用iisnode,但没有成功,我也读到了反向代理,以便将端口80上的请求重定向到另一个端口。 这两种解决方案都可能有效,但是,在花费其他时间在错误的方向之前,我会问这种情况下的最佳做法是什么。
更新: 向前迈出一小步。 我现在可以访问应用程序的加载页面,但是应用程序无法找到我的bundle.js(由Webpack创建的包)。
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>
我一直在调整配置和路径,没有结果......
由于
最高
答案 0 :(得分:1)
使用ARR模块进行IIS的反向代理将是实现您想要的最佳方式。
Application Request Routing
页面上,选择Enable proxy
在此网站文件夹中创建web.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