素材牛VIP会员
服务器上映射子域名到指定端口的 Node 应用有哪些方案?
 su***se  分类:Node.js  人气:773  回帖:2  发布于6年前 收藏

用到的时候是安装习惯从 Google 先找了 Nginx 的方案先拼凑了一个脚本用着,
http://stackoverflow.com/questions/50...
但是否还有别的方案, 比如不借助 Nginx, 直接用 Node,
比方应用监听8000端口, 服务器有域名abcd.in, 想运行到app.abcd.in这样,
有哪些方案可以行得通?

 标签:node.js

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv5 码农
陌***3 PHP开发工程师 6年前#1

你可以使用connect.js的vhost或者express.js(基于connect.js)。

var connect = require('connect'),
    http = require('http');

// 其他的require...

var vhost1 = connect.vhost(
    'www.example.com',
    connect.createServer(...)
);
var vhost2 = connect.vhost(
    'bbs.example.com',
    http.createServer(...) // http.server也可以
);

connect.createServer(
    connect.logger(), vhost1, vhost2
).listen(8888);

用nginx做proxy的方案更好,更灵活。

你也可以在node.js程序内部判断host:

app.get('some_route', function(req, res) {
    var host = req.header('host');
    // 然后针对host做处理
});
Lv3 码奴
赵***3 移动开发工程师 6年前#2

你需要使用web server为你的node程序做Proxy

相当于在web server上建立虚拟主机之后,转发所有请求到node程序监听的端口

以你的域名举例 app.abcd.in --> 本地8000端口(Node App),假设我安装了apache

<VirtualHost *:80>
 ServerAdmin webmaster@dummy-host.example.com
 DocumentRoot "/你的应用目录/"
 ServerName app.abcd.in
 ServerAlias app.abcd.in
 ErrorLog "/你的应用目录/logs/error.log"
 CustomLog "/你的应用目录/logs/access.log"  combined
 ProxyPass / http://app.abcd.in:8000/
 </VirtualHost>
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取