Nesse post falarei um pouco mais sobre a união entre Node.js e Nginx, mostrando as vantagens desse casamento e como implementar essa dupla corretamente.
O objetivo dessa integração visa aumentar performance de uma aplicação pelo qual criaremos um proxy server do Nginx com Node.js e também um static server pelo qual é delegado todo processamento de arquivos estático para o Nginx, deixando apenas que o Node.js cuide do processamento de suas rotas, diminuindo o número de requisições diretas na aplicação.
Atenção: Não entrarei em detalhes sobre como instalar o Nginx em sua máquina, para instalá-lo recomendo que acesse seu site oficial: http://nginx.org. Também recomendo que leia sua Wiki que contém diversas dicas de como configurá-lo. A versão utilizada neste post é a versão 1.5.2, recomendo que não utilize versões anteriores a esta, pois provavelmente não irá funcionar a dica de configuração que explicarei a seguir.
Agora que temos o Nginx instalado e funcionando corretamente em sua máquina, vamos configurá-lo para que ele comece a servir arquivos estáticos de nossa aplicação, tudo isso será feito dentro de seu arquivo principal chamado nginx.conf. A localização deste arquivo varia de acordo com o sistema operacional, então recomendo que leia sua documentação oficial para descobrir onde ele se encontra.
Abaixo apresento uma versão simplificada de configuração do Nginx. Esta configuração fará o Nginx servir os arquivos estáticos ao invés do Node.js, e para finalizar aplicamos um proxy no Nginx para que ele redirecione para Node.js quando um usuário acessar uma rota da nossa aplicação.
worker_processes 1;
events {
  worker_connections 1024;
}
http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;
  gzip on;

  server {
 listen 80;
 server_name localhost;
 access_log logs/access.log;

 location /static {
   root /meuapp/public;
   expires max;
 }
 location / {
   proxy_pass http://localhost:3000;
    }
  }
}
Praticamente adicionamos algumas melhorias em cima das configurações padrões do nginx.conf. Com o objetivo de otimizar o servidor estático, habilitamos compactação gzip, através do trecho: gzip on e criamos dois location dentro de server. O primeiro location é responsável por servir conteúdo estático.
location /static {
  root /meuapp/public;
  expires max;
}
É dentro dele definimos a localização da pasta public da nossa aplicação através do trecho: root /meuapp/public. Esta localização definida no item root se baseia no endereço onde fica a pasta public do seu sistema operacional, ou seja, emroot /meuapp/public estou assumindo que a pasta meuapp esta localizada na raíz do sistema operacional (geralmente sistemasLinux, Unix e MacOSX utilizam este padrão de endereço). Se o seu sistema é Windows altere o endereço para o padrão de diretórios dele, que é algo semelhante a root C:/meuapp/public. Também aplicamos dentro desse location um cache simples dos arquivos através do item: expires max.

No último location, aplicamos o proxy server, o item proxy_pass praticamente faz um redirecionamento para as demais rotas da aplicação e esse redirecionamento vai para o endereço: http://localhost:3000.
location / {
  proxy_pass http://localhost:3000;
}
Agora que já configuramos o Nginx, vamos criar uma simples aplicação em Node.js. Crie o arquivo dentro da pasta /meuapp e também crie a pasta /meuapp/public. Abaixo segue o código-fonte da aplicação Node utilizando Express:
// Arquivo: app.js
var express = require('express')
  , app = express();

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.static(__dirname + '/public'));

app.get('/node', function(req, res){
  var html  = "<h1>Aqui é Node.js!</h1>"
       + "<h1><a href='/static/nginx.html'>Ir para Nginx</a></h1>";
  res.send(html);
});

app.listen(3000);
Vamos criar o arquivo nginx.html dentro da pasta /meuapp/public/static, para que este arquivo seja servido via Nginx.
<h1>Aqui é Nginx</h1>
<h1><a href="/node">Ir para Node.js</a></h1>
Pronto! Criamos uma aplicação em Node.js que utiliza o Express, para rodá-lo, instale primeiro: npm install express --save
Agora execute: node app.js.
Acesse no seu browser: http://localhost:3000 e clique em ambos os links. Veja dessa vez os logs registraram acessos nas rotas:/node e /nginx.html.
Node.js servindo arquivo estático
Node.js servindo estático (clique na imagem)
Isto é normal, visto que até agora o Node.js esta servindo arquivo estático e o Nginx não esta rodando seu proxy server por um motivo: você está acessando diretamente o servidor Node.js através da porta 3000.
Agora que temos o Nginx configurado, que tal testar essa integração? Reinicie o Nginx através do comando: nginx -s reload. E acesse sua aplicação através do novo endereço: http://localhost.
Nginx servindo arquivo estático
Nginx servindo estático (clique na imagem)
Dessa vez o seu log da aplicação Node.js vai apenas registrar acessos na rota /node, deixando que a rota /nginx.html seja acessada pelo Nginx.

fonte: http://udgwebdev.com/nginx-servindo-nodejs/