Nginx config - servindo index.html não funcionando

7

Não consigo descobrir como redirecionar / para index.html . Eu passei pelos threads no serverfault e acho que tentei todas as sugestões, incluindo:

  • reescreva as declarações em location /
  • index index.html no nível server , dentro de location / e dentro do conteúdo estático
  • movendo as declarações de proxy node.js para location ~ /i em vez de location /

Obviamente, algo está errado em algum outro lugar na minha configuração. Aqui está o meu nginx.conf:

worker_processes  1;

pid        /home/logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;

    error_log   /home/logs/error.log;
    access_log  /home/logs/access.log combined;

    include sites-enabled/*;
}

e minha configuração de servidor localizada em sites habilitados

server {
  root        /home/www/public;
  listen      80;
  server_name localhost;

  # proxy request to node
  location / {
    index index.html index.htm;
    proxy_set_header   Host             $http_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://127.0.0.1:3010;
    proxy_redirect     off;
    break;
  }  

  #  static content
  location ~ \.(?:ico|jpe?g|jpeg|gif|css|png|js|swf|xml|woff|eot|svg|ttf|html)$ {
    access_log  off;
    add_header  Pragma public;
    add_header  Cache-Control public;
    expires     30d;  
  }

  gzip on;
  gzip_vary on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_min_length  1000;
  gzip_disable     "msie6";
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}

Tudo está funcionando bem. As solicitações ficam com proxy no nó corretamente e o conteúdo estático é exibido corretamente. Eu só preciso poder encaminhar solicitações feitas para / para /index.html .

    
por Bill 19.06.2012 / 04:33

1 resposta

9

Basicamente, a diretiva root (dentro do bloco de localização) não mencionou o caminho completo . Além disso, um ; está faltando no final da diretiva index (pode ser um erro de digitação, o nginx geralmente captura esses erros de digitação).

Assim, a configuração do seu servidor localizada em sites habilitados ficaria assim (após as duas alterações acima) ...

server {
  root        /home/www/public;
  listen      80;
  server_name localhost;
  index index.html index.htm;

  # proxy request to node
  location @proxy {
    proxy_set_header   Host             $http_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://127.0.0.1:3010;
    proxy_redirect     off;
    break;
  }

  location / {
    try_files $uri $uri/ @proxy;
  }

# rest of the configuration
# ...
# ...

}

    
por 19.06.2012 / 04:58

Tags