NodeJS + ExpressJS - 如何将我的域名指向端口3000?

3

我的生产服务器上,我正在运行我的expressjs应用程序,位于

http://122.22.11.22:3000

但是我如何使用域名或子域名来代替呢?例如:

http://my-express.com

或者

http://exress.mymastersite.com

顺便说一下,我使用express-generator创建我的express骨架,并且我在Linux Arch上。

有什么想法吗?

在bin/www中,我有以下代码,这是由express-generator默认自动生成的:

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('mongoose-iot:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

....
....
....
1个回答

4

您想要做的是虚拟主机托管,您可以使用nginx来实现。

使您的express仅监听本地主机: server.listen(3000, 'localhost');

然后将您的nginx设置为:

server {
    listen 80;

    server_name express.your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    } }

您可以添加任意数量的虚拟主机。

有没有 ngnix 的替代品?我在本地的 Ubuntu 上安装它时遇到了问题,所以我不敢在我的 Arch Linux 服务器上安装它。 - Run
1
Apache或HAProxy也可以做到这一点。或者您可以直接在Node.js中尝试https://github.com/expressjs/vhost。 - Pierre Inglebert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接