Apache WebServer 上的 NodeJS ExpressJS 網路域

Apache WebServer 上的 NodeJS ExpressJS 網路域

我來自 LAMP 世界,所以我對如何從我的網頁伺服器提供 ExpressJS 應用程式有點困惑。

我有多個 Apache 虛擬主機,它們都指向不同的目錄並指定不同的網域名稱。它們在/etc/apache2/sites-available/我的 Ubuntu 上都有設定檔。

無論如何,我使用 Node 安裝了一個 ExpressJS 實例,它/var/www/與我的其他 Web (Apache) 內容一起位於我的目錄中的一個目錄中。

我如何使用特定的網域來為其提供服務而不必這樣做IP:3000(由於我的防火牆,這甚至不起作用)。我看到這個:Apache HTTPD:具有代理和目錄別名的虛擬主機的 URL 解析,但我不確定它是否正確,因為我在其他地方讀到您希望避免 Node 的 Apache 主機,因為它會破壞其效能?只是在這裡尋找最佳答案。

它應該使用連接埠 80 並映射到特定域,同時最大限度地減少效能影響。我也不確定在節點檔案中到底要指向什麼,我猜是該/var/www/nodeapp/node_modules/express/index.js檔案?

感謝您的熱心幫助!

答案1

感謝邁克爾·漢普頓(Michael Hampton)的鏈接,這是完整/編輯的答案以供將來參考:

Apache 虛擬主機/設定檔:

<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

相關內容