2013-02-28 43 views
0

我在nginx的前面路線Node.js的這運行在EC2上光油清漆,nginx的,Node.js的:nginx的靜態HTML頁面與node.js的後備

我想通過nginx爲某些路由提供特定的靜態HTML頁面(例如,/index.html),但是所有其他路由都由node.js處理。

作爲一個例子,/將由nginx的在靜態HTML頁面的形式發送的,而任何不匹配,說/dynamic_stuff/dynamic_stuff2,將由node.js中被處理

在其他線程在線,其他人把node.js放在一個單獨的dir中,就像/node/dynamic_stuff一樣,但是我不想爲我的路由指定一個單獨的dir。

現在我有/擔任了由node.js的其他事物一樣,但如果我只是在測試我的node.js服務器,我把它記下來,我想/退卻到的index.html Nginx上的版本。在這種情況下,如果我的node.js服務器被關閉,那麼我得到一個502 Bad Gateway。

我並不太擔心通過nginx和node.js提供文件的性能,我只是想知道如果node.js因任何原因停止運行,我想讓nginx處理基本頁面。

相關的腳本:

location =/{ 
    index index.html 
    root /path/to/public 
    try_files $uri $uri/ index.html; 
} 

location/{ 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_pass node_js; 
} 

如果我用這上面的代碼中,所有的請求仍然會發送到node.js的,包括/

回答

0

我想,如果這是最簡單的事情做只是index.html的是指數設定爲

index index.html 
root /path/to/public 

所有文件在您的公共目錄現在應該從Nginx的服務。

現在把這個index.html的在您的節點應用程序的公共目錄。其餘的將從nginx代理到節點實例。

當然你也可以簡單地把其他靜態html子目錄中,如果你想:

public/about(index.html 
public/faq/index.html 
... 
+0

如果我這樣做,它仍然向前'/'到Node.js的以下是我的conf中的相關部分: location =/{ index index.html root/path/to/public try_files $ uri $ uri/index.html; } 位置/ { proxy_set_header X-實時IP $ REMOTE_ADDR; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header主機$ http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http:// node_js /; } – Xeus 2013-03-01 18:16:03

+0

這有點難以閱讀。也許你可以將你的配置作爲代碼片段放到你的問題中。 – topek 2013-03-01 18:57:48

+0

好的,完成了,謝謝! – Xeus 2013-03-01 19:45:24