Apache WebServer 上的 NodeJS ExpressJS 网络域

Apache WebServer 上的 NodeJS ExpressJS 网络域

我来自 LAMP 世界,因此对于如何从我的网络服务器提供 ExpressJS 应用程序有点困惑。

我有多个 Apache 虚拟主机,它们都指向不同的目录并指定不同的域名。它们都在/etc/apache2/sites-available/我的 Ubuntu 上具有配置文件。

无论如何,我使用节点安装了一个 ExpressJS 实例,它位于我的/var/www/目录的一个目录中,与我的其他 Web(Apache)内容在一起。

我如何才能使用特定域名提供服务而无需执行任何操作IP:3000(由于我的防火墙,这甚至不起作用)。我看到了以下内容:Apache HTTPD:具有代理和目录别名的虚拟主机的 URL 解析,但我不确定这是否正确,因为我在其他地方读到您想避免使用 Apache 主机作为 Node,因为它会破坏其性能?只是在这里寻找最好的答案。

它应该使用端口 80 并映射到特定域,同时尽量减少对性能的影响。我也不确定在节点文件中应该将它指向什么,我猜是文件/var/www/nodeapp/node_modules/express/index.js

谢谢您的热情帮助!

答案1

感谢 Michael Hampton 提供的链接,这里有一个完整/编辑过的答案,供将来参考:

Apache VirtualHost/配置文件:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName example.com
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyPass "/" "http://localhost:3000"
    ProxyPassReverse "/"= "http://localhost:3000"
</VirtualHost>

笔记:为了使上述功能正常工作,您需要安装 Apache 的mod_proxy软件包,请参阅 Apache 文档,或者执行以下操作:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

3000在配置文件中是因为我的 Node 应用程序正在此运行,请参见此处:

/*!
 * express
 * Copyright(c) 2009-2013 TJ Holowaychuk
 * Copyright(c) 2013 Roman Shtylman
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 * MIT Licensed
 * index.js
 */

'use strict';

var express = require('./lib/express');
var http = require('http');

var app = express();
var server = http.createServer(app);

app.get('/', function(req, res) {
    res.send("Hello World!");
});

server.listen(3000, 'localhost');
server.on('listening', function() {
    console.log('Express server started on port %s at %s', server.address().port, server.address().address);
});

要运行它,只需执行node index.js

为了在退出该命令后仍保持其运行,请添加一个&,如下所示:

node index.js &

^ 请注意,只有当您的 Unix 会话处于活动状态时,它才会保持运行,例如,如果您关闭 SSH 客户端节点,即使使用了 ,它也会停止运行&

看这里如何让它永久运行:https://stackoverflow.com/questions/12701259/how-to-make-a-node-js-application-run-permanently

相关内容