2014-02-21 142 views
2

我需要爲我的問題正確配置nginx。Nginx + node.js配置

假設nginx + nodejs服務器程序運行在同一個debian機器上。 我的網站的域名只是爲了簡單只是webserver.com(和www.webserver.com作爲別名)

現在,當有人在互聯網上瀏覽到「webserver.com/」時,它應該將請求傳遞給nodejs應該運行在特定的端口上,例如3000。但圖像和css文件應該由nginx作爲靜態文件提供,文件結構應該像webserver.com/images或webserver.com/css一樣響起。圖像+ css應該像nginx一樣由靜態服務器提供服務

Now它變得棘手: 但是當有人在webserver.com/staticsite001或webserver.com/staticsite002上衝浪時,它應該只能由nginx服務器提供服務。那麼不需要nodejs。

而對於服務器的NodeJS,我只是設置我的例如3000端口應用的NodeJS從nginx的接收旁路webserver.com/

把它放在一個更容易理解的語言:當有人衝浪到webserver.com/staticsite001它不應該將它傳遞給節點應用程序。它應該只傳遞給節點應用程序,如果它在外部人員可以看到的第一個webserver.com/目錄內。 webserver.com/staticsite001只能通過nginx獲得服務器。

如何,我該怎麼做? http和服務器塊應該是什麼樣的nginx配置看起來像?

我對nodejs很熟悉。但我對nginx和新的反向代理新手。 感謝

Debian的硬盤驅動器上的文件結構如下:

/家庭/ wwwexample/staticsite001(用於www.webserver.com/staticsite001/)只能由nginx的處理 /家庭/ wwwexample/staticsite002(對於www.webserver.com/staticiste002/)僅handlex nginx的 /家庭/ wwwexample /圖像
/家庭/ wwwexample/CSS

和 /家/ nodeapplication是我的節點JS應用

回答

1

此服務器塊應該工作:

server { 
    listen 80; 
    server_name webserver.com www.webserver.com; 

    root /home/wwwexample; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_set_header Host $host; 
    } 

    location /staticsite001 { 
    } 

    location /staticsite002 { 
    } 

    location /images { 
    } 

    location /css { 
    } 
} 

首先location使nginx的以proxy一切localhost:3000。在空的location之後,指示nginx使用默認行爲,即爲靜態文件提供服務。

將此代碼嵌入文件/etc/nginx/sites-available/my-server,並在/etc/nginx/sites-enabled中爲其創建符號鏈接。有一個default配置,您可以將其用作參考。

之後,您可以使用命令sudo /usr/sbin/nginx -t來檢查配置。如果一切正常,請使用/etc/init.d/nginx reload來應用新配置。

+1

如果我沒有網站可用和啓用網站的文件夾會怎麼樣?因爲 –