搜索
node.js - 服务器上映射子域名到指定端口的 Node 应用有哪些方案?
PHP中文网
PHP中文网 2017-04-17 10:59:02
[Node.js讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
PHP中文网

你可以使用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做处理
});
怪我咯

你需要使用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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号