Я пытаюсь запустить приложение node.js в iisnode. Я добавил SSL сертификат в IIS. Теперь я запускаю приложение в http, а не в https. Когда я запускаю приложение, я вижу эту ошибку
net :: ERR_ABORTED 500 (Ошибка модуля перезаписи URL.)
Для всех статических ресурсов. Я включил просмотр каталогов для общего iisnode / www. Я гарантировал, что каталог iisnode / www имеет полный контроль над чтением / записью для группы IIS_IUSRS.
Я не знаком с написанием правил или структурированием web.config. Пожалуйста, помогите мне структурировать web.config.
Я показал структуру каталогов iisnode / www здесь:
<configuration>
<system.web>
<customErrors mode="Off" />
<httpCookies httpOnlyCookies="true" />
</system.web>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="infrc">
<match url="/*" />
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<clear />
<add value="web.config" />
<add value="app.js" />
<add value="index.html" />
</files>
</defaultDocument>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
**app.js**
'use strict';
var express = require('express');
var http = require('http');
var fs = require('fs');
var path = require('path');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
const moment = require('moment');
require('dotenv').config();
var routes = require('./server/routes/index.route');
var config = require('./server/config/config');
var app = express();
morgan.token('user', (req, res) => {
if (req.user) {
return req.user.id;
} else {
return "Guest";
}
});
morgan.token('timestamp', (req, res) => {
return moment().format();
});
app.use(morgan(':timestamp :response-time :method :status :user :remote-addr :url'));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended : false }));
app.use(express.static(path.join(__dirname, '/client')));
app.get('/',function(req,res){
res.sendFile(path.join(__dirname, 'client/index.html'));
});
let port = 444;
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'?'Pipe ' + port:'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'?'pipe ' + addr: 'port ' + addr.port;
console.log('Listening on ' + bind);
}
var server = http.createServer(app);
console.log(server);
app.set('port', port);
app.set('view engine', 'ejs');
server.on('error', onError);
server.on('listening', onListening);
const initializeDatabases = require('./server/dbs').initializeDatabases;
const crons = require('./server/routes/crons.js').crons;
initializeDatabases().then(dbs => {
routes(app, dbs);
server.listen(port);
}).catch(err => {
console.error('Failed to make all database connections!');
console.error(err);
process.exit(1);
});
module.exports = app;