2016-09-28 26 views
0

我完全停留在想要在一臺服務器上安裝多個節點應用程序的情況。通過讓應用程序在不同端口上運行,我可以很好地工作。我可以通過使用端口輸入IP地址來訪問應用程序。nginx代理到遠程node.js在子目錄中表示應用程序

我想通過使用不同的子目錄,像這樣的代理從我的nginx服務器的應用程序:

my.domain 

location /app1 { 
    proxy_pass http://10.131.6.181:3001; 
} 
location /app2 { 
    proxy_pass http://10.131.6.181:3002; 
} 

這樣做,我不得不移動所有的快遞航線/ APP1的應用1。這工作,但現在我堅持與靜態文件。

我現在可以通過http://10.131.6.181:3001/app1訪問應用程序,但是通過http://my.domain/app1靜態文件未加載。

靜態文件,可以直接訪問http://10.131.6.181:3001/css但不通過代理http://my.domain/css

理想我想有不同的端口沒有子目錄中的表達路線在代理申請,但只有子目錄。我試圖在過去的5個小時裏把頭伸過牆,但沒有取得任何成果。

現在我會很高興,如果至少可以通過nginx代理獲取靜態文件。

+0

你可能想看看http://serverfault.com/questions/562756/how-to-remove-the-path-with-an-nginx-代理通,也許這有助於 –

+0

我需要在節點服務器上設置nginx嗎?所以我從Web服務器重定向到節點服務器,並再次在節點服務器上的第二個Nginx的重定向? –

+0

啊,我以爲這是nginx,你用apache嗎? –

回答

0

我終於在谷歌浪涌後解決了它。

我添加了目錄nginx的proxy_pass

my.domain 

location /app1 { 
    proxy_pass http://10.131.6.181:3001/app1; 
} 
location /app2 { 
    proxy_pass http://10.131.6.181:3002/app2; 
} 

我不得不改變Express應用程序使用子目錄

app.use('/app1', express.static(path.join(__dirname, 'public'))); 

app.use('/app1'', require('./routes')); 

在路由器,我不得不前綴的所有重定向。

router.get('/logout', function (req, res) { 
    req.logout(); 
    res.redirect('/app1/login'); 
}); 

靜態文件被稱爲像這樣從HTML

<link rel="stylesheet" href="/app1/css/style.css"/> 

痛了一下,改變所有的重定向和靜態URL。我確定通過在我的node-express應用程序中設置一個全局變量有一個更明智的方法。如果有人知道更簡單的方法,請發佈...

相關問題