Nginx在错误的目录中查找html5 appcache文件

时间:2013-09-21 16:10:34

标签: nginx html5-appcache

我的manifest.appcache文件位于http://example.com/manifest.appcache,但NGINX正在/usr/share/nginx/html/manifest.appcache

查找此文件

我甚至在我的example.conf文件中添加了以下内容:

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

我的根设置为

root /home/sushi/www/example/;

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果server_name正是您所使用的,那么您的nginx配置看起来很好,那么我不确切地知道错误,但让我整理您的配置,可能有帮助

对于重定向,我更喜欢使用单独的服务器来执行重定向,而不是使用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 ..你试过吗?

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