node.js - 服务器上映射子域名到指定端口的 Node 应用有哪些方案?

 不要说话-2502882353 发布于 2022-11-06 21:21

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

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>
    2022-11-12 01:36 回答
  • 你可以使用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做处理
    });
    2022-11-12 01:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有