2013-09-21 2 views
1

Мой файл manifest.appcache находится в http://example.com/manifest.appcache однако NGINX ищет этот файл в /usr/share/nginx/html/manifest.appcacheNginx ищет html5 файла AppCache в неверном каталоге

Я даже добавил следующее в моем файле example.conf:

location /manifest.appcache { 
    try_files $uri /home/sushi/www/example/manifest.appcache; 
} 

И мой корень устанавливается как

root /home/sushi/www/example/; 

Что я делаю не так?

+0

вы можете разделить весь Nginx конфигурации? вероятно, ваш запрос соответствует серверу по умолчанию, а не виртуальному серверу, который, по вашему мнению, соответствует. –

+0

Спасибо. Вот вы: https://gist.github.com/sushimashi/6653621 – Sushi

+0

На самом деле, я хотел, чтобы внутри внутри 'sites-enabled', а точнее, файл, содержащий этот блок' location' и 'try_files' –

ответ

1

Ваш Nginx конфигурации выглядит хорошо, если server_name именно то, что вы используете, то я не знаю точно, что это неправильно, но позвольте мне привести в порядок свой конфиг, может помочь

Для перенаправления Я предпочитаю использовать отдельный сервер для перенаправления вместо использования условия if

server { 
    listen 80; 
    server_name www.example.com; 
    return 301 example.com$request_uri; 
} 

Не нужно повторно объявлять корень и индекс. достаточно указать их один раз на уровне серверного блока.

server { 
    listen 80; 
    server_name example.com; 
    root /home/sushi/www/example/; 
    access_log /home/sushi/www/example/logs/access.log; 
    error_log /home/sushi/www/example/logs/error.log; 
    index index.html index.htm; 
    location/{ 
     try_files $uri $uri/ =404; 
    } 
} 

С вашего manifest.appcache именно там, где $uri будет выглядеть, то вам не нужно явно указать это, вопрос в том, что Nginx не будет соответствовать блок сервера.

Другая случайная идея заключается в том, что, возможно, nginx не знает, что сервер существует, потому что вы не перезапускали nginx после создания сервера. Вы пробовали это?

EDIT: Блок внутри nginx.conf должен быть перемещен здесь внутри example.conf файла

server { 
    listen 80; 
    server_name example.com; 
    root /home/sushi/www/example/; 
    access_log /home/sushi/www/example/logs/access.log; 
    error_log /home/sushi/www/example/logs/error.log; 
    index index.html index.htm; 
    location/{ 
     try_files $uri $uri/ =404; 
    } 
    location ~* \.(?:manifest|appcache|html?|xml|json)$ { 
     expires -1; 
     access_log logs/static.log; 
    } 
} 
+0

Я попытался перезапустить и перезагрузить несколько раз. – Sushi

+0

внутри 'sites-enabled' у вас есть файл с именем' default'? можете ли вы вставлять строки 'listen' и' server_name', имеет ли он такое же имя сервера, как этот? –

+0

Здесь вы найдете: https://gist.github.com/sushimashi/6657469 Также просто хочу еще раз поблагодарить вас за вашу помощь. – Sushi

Смежные вопросы