2012-01-12 69 views
6

今天我第一次安裝了NGINX服務器。它工作得很好,但是我正面臨着配置服務器與node.js一起工作的一個小問題。Nginx.conf和Node.js安裝場景

我想在nginx.conf中有以下邏輯。

  1. 目錄列表被禁用
  2. 所有靜態文件(圖片,JS,少和css)從像http://hostname/remote_data/??/??/的NGINX
  3. 所有請求提供服務??????被路由到node.js服務器
  4. 所有請求像http://hostname/??/??/ ??????被路由到index.html,所以不能到達node.js

問號是可選參數:)可能有0到7個參數。

我很抱歉,如果這種設置方案很容易完成,但我與它戰鬥了將近3個小時,我卡住了。第1步和第2步已準備就緒 - 10倍谷歌。

問候 丹

+0

你有沒有找到這個問題的答案? – jwerre 2012-10-26 09:49:24

回答

5

你應該看看this answer。從接受的答案我有這樣的事情:

upstream node_app { 
    server localhost:8080; 
} 

server { 

    listen 80; 
    server_name FOO_HOSTNAME_GOES_HERE; 

    root /the/root/to/foo/document/root; 
    access_log /var/log/nginx/foo.access.log; 
    error_page 404 /404.html; 

    location /remote_data/ { 

    # Proxy request to node: 

    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-NginX-Proxy true; 

    proxy_pass http://node_app; 
    proxy_redirect off; 

    access_log /var/log/nginx/foo_nodeapp.access.log; 

    } 

    location/{ 
    try_files $uri $uri/index.html 404; 
    } 

} 

雖然未經測試。

+0

感謝您的回覆。我已經設法使它適用於以下配置: Dan 2012-01-13 06:51:56

+0

這節省了我的一天。謝謝。 – Aldo 2014-06-25 20:05:20

2

我已經設法使之與下面的conf工作:

server { 
    root /var/www; 
    listen  80; 
    server_name _; 


    location ~* /remote_data { 
     # Proxy request to node: 

     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://node_app; 
     proxy_redirect off; 
     break; 
    }  

    location/{ 
     index index.html index.htm; 

     location ~ \.(js|css|png|jpg|jpeg|gif|ico|html|less)$ { 
      expires max; 
      break; 
     } 

     rewrite ^/(.*)?$ /index.html?q=$1 last; 
    } 

    # serve static files directly 
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ { 
     access_log  off; 
     expires   30d; 
    } 
}