2017-04-27 152 views
-3

我正在使用MAMP服務器和節點js。在同一個端口上運行apache服務器和節點

我的問題是我想在同一個端口上運行apache服務器和節點,但是在線解決方案相當複雜,因爲它沒有服務於很多目的,我也是Node新手。 我需要一個簡單的解決方案,我可以在apache服務器的端口上節點。

代碼如下,

它工作得很好,因爲一切都在不同的端口上運行,但我想要的「服務器」到Apache是​​運行在端口8888上運行。或者某種方式讓節點與apache交互

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io').listen(server); 
var mysql = require('mysql'); 
var router = express.Router(); 

var connection = mysql.createConnection({ 
    host : 'localhost', 
    user : 'root', 
    password : 'root', 
    database : 'db', 
    port : '8889' 
}); 

server.listen(8888); <----- ERROR 
console.log('server running.......'); 

connection.connect(function(error){ 
    if(!!error) { 
     console.log('error in db connection'); 
    } else { 
     console.log('db connected'); 
    } 
}); 

app.use('/*', router); 

router.get('/*', function (req, res) { 
    console.log('hello there...'); 
}); 
+0

我認爲這是不可能的 –

+0

同意@FrankRoth。 –

+0

弗蘭克羅斯我在互聯網上發現,大多數解決方案使用HTTP代理,但我對如何使用它在我的情況無能爲力.. –

回答

0

您可以使用http-proxy

var http = require('http'), 
httpProxy = require('http-proxy'), 
proxyServer = httpProxy.createServer ({ 
    hostnameOnly: true, 
    router: { 
     '127.0.0.1':  '127.0.0.1:8080' 
    } 
}); 

proxyServer.listen(8888); 

這將創建一個節點處理監聽端口,並轉發請求域。

0

,你會發現在這個題目很多教程,但這裏是一個概述:

  • 你需要Apache國防部mod_proxy

  • 你需要像this basicly設置, 此鏈接包括如何insturctions以某種方式設置它,它也會轉發你的websocket(如果你需要的話)。

  • 您將使用某些想法,http://localhost:3005其中3005是nodejs運行的端口。 (選擇你喜歡的任何端口)

  • 它可能是有用的,以補充該端口給你iptables來避免直接訪問(不阿帕奇)

0

我認爲這樣做的正確方法是「面子'使用Apache Proxypass的Node服務。這將轉發到另一個端口上運行的節點服務的路徑。

添加以下到你的httpd.conf或虛擬主機和下啓動Apache應該給你一個工作結果

#I'm using 8890 for Node since your Apache runs on 8888 and DB is on 8889 
ProxyPass /node/ http://localhost:8890/ 
ProxyPassReverse /node/ http://localhost:8890/ 

導航到http://localhost:8888/node/將您連接到節點上服務8890端口訪問

運行
相關問題