Javascript 使用express vhost时子域不起作用

Javascript 使用express vhost时子域不起作用,javascript,node.js,express,digital-ocean,express-vhost,Javascript,Node.js,Express,Digital Ocean,Express Vhost,新的堆栈溢出 所以我在数字海洋水滴上使用Express(节点9)托管我的网站。我使用的是expressvhost,因此我可以检测子域,以允许我执行api.example.com而不是example.com/api,但当我尝试时,它只会将我指向example.com,而主机名中仍然有api.部分 我不确定这是否是一个编程问题,或者它是否真的与我的DNS记录有关,或者可能是数字海洋的问题。我不具备VPSE和主机方面的知识 代码如下: // app.js var subdomain = require

新的堆栈溢出

所以我在数字海洋水滴上使用Express(节点9)托管我的网站。我使用的是
expressvhost
,因此我可以检测子域,以允许我执行
api.example.com
而不是
example.com/api
,但当我尝试时,它只会将我指向
example.com
,而主机名中仍然有
api.
部分

我不确定这是否是一个编程问题,或者它是否真的与我的DNS记录有关,或者可能是数字海洋的问题。我不具备VPSE和主机方面的知识

代码如下:

// app.js
var subdomain = require('express-vhost');
var express = require('express');
var app = express();
var router = express.Router();
var api = require("./api.js")

subdomain.register('api.localhost:3000', api)
app.use(subdomain.vhost(app.enabled('trust proxy')));

app.get('/', function(req, res) {
    res.send('Detect Region and send to correct subdomain!');
});

app.listen(3000);
另一个文件呢

// api.js
var express = require('express')
var router = express.Router()

router.get('/', function(req, res) {
    res.send("api url")
});

module.exports = router;
如果这是不够的信息,很抱歉。很高兴回答您需要回答的任何其他问题


--sys

我建议您不要使用
express vhost
(旧的和弃用的软件包),而是直接使用express组织的
vhost
模块

const vhost = require('vhost')
const express = require('express')
const app = express()
const api = require('./api')

app.enable('trust proxy')

app.use(vhost('api.localhost:8000', api)) // api being your router

app.get('/', function(req, res) {
    res.send('Detect Region and send to correct subdomain!');
})

app.listen(3000)

我在localhost和我的Web服务器上都试过了,但似乎不起作用。我使用lvh.me以便localhost能够获取子域。