我正在使用vhost它express来管理两个子域.一切正常,但我想通过ip过滤其中一个子域的请求.你知道这是否可行?
我试着在我的子域名网站的app.js来管理它,但req.connection.remoteAddress并req.ip给我的服务器的IP.
当我只有一个子域并且不使用vhost时我有正确的ip,但是因为我使用了vhost我已经得到了我服务器的ip ...
这是我之前的文件夹结构:
-- subdomain1/
-- app.js
-- views/
Run Code Online (Sandbox Code Playgroud)
这是我的新结构:
-- subdomain1/
-- app.js
-- views/
-- subdomain2/
-- app.js
-- views/
-- manageSubdomain/
-- app.js
Run Code Online (Sandbox Code Playgroud)
这是我的代码,它在使用vhost之前工作,并且只用于一个子域:
subdomain1/app.js:
var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
require('body-parser-xml')(bodyParser);
var routes = require('./routes/index');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after …Run Code Online (Sandbox Code Playgroud) 我正在尝试从不同的server.js文件(不同的目录、配置等)在同一端口和服务器上运行 2 个 NodeJS 实例。我的服务器提供商给了我一个vhost针对不同域运行的信息,这就是问题所在。如何在 NodeJS Express 应用程序中处理它?我试过vhost从https://github.com/expressjs/vhost像这样使用:
const app = express();
const vhost = require('vhost');
app.use(vhost('example1.org', app));
// Start up the Node server
app.listen(4100, () => {
console.log(`Node server listening on 4100`);
});
Run Code Online (Sandbox Code Playgroud)
对于这样的第二个应用程序:
const app = express();
const vhost = require('vhost');
app.use(vhost('example2.org', app));
// Start up the Node server
app.listen(4100, () => {
console.log(`Node server listening on 4100`);
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行第二个实例时,我得到了EADDRINUSE ::: 4100,所以 vhost 在这里不起作用。
你知道如何解决吗?