Назад | Перейти на главную страницу

Конфигурация Nginx - обслуживание index.html не работает

Я не могу понять, как перенаправить / к index.html. Я просмотрел темы serverfault и, думаю, пробовал все предложения, включая:

Очевидно, что-то не так в моей конфигурации. Вот мой 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/*;
}

и конфигурация моего сервера, расположенная на сайтах с поддержкой

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

Все остальное работает нормально. Запросы правильно передаются на узел, и статический контент обслуживается правильно. Мне просто нужно иметь возможность пересылать запросы на / к /index.html.

В основном root директива (внутри блока местоположения) не упоминала полный путь. Также ; отсутствует в конце index директива (возможно, это опечатка, nginx обычно выявляет эти опечатки).

Итак, конфигурация вашего сервера, расположенная на сайтах с поддержкой, будет выглядеть так (после двух вышеуказанных изменений) ...

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
# ...
# ...

}