Nginx.conf和Node.js设置方案

时间:2012-01-12 21:20:00

标签: node.js nginx

今天我第一次安装了NGINX服务器。它工作得很好,但我面临一个小问题,配置服务器与node.js一起工作。

我想在nginx.conf中使用以下逻辑。

  1. 要禁用的目录列表
  2. 从NGINX
  3. 提供的所有静态文件(images,js,less和css)
  4. 所有请求,例如http://hostname/remote_data/??/??/ ??????要路由到node.js服务器
  5. 所有请求,例如http://hostname/??/??/ ??????要路由到index.html,所以不要到达node.js
  6. 问号是可选参数:)可以有0到7个参数。

    我很抱歉,如果这个设置方案很容易完成,但是我正在与它斗争近3个小时而且我被困住了。第1步和第2步准备就绪 - 10倍到谷歌。

    此致 丹

2 个答案:

答案 0 :(得分: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;
  }

}

虽然未经测试。

答案 1 :(得分:2)

我已成功使用以下内容:

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;
    }
}