NGINX不提供htm文件,但提供所有其他静态文件

时间:2016-11-23 18:16:43

标签: django nginx tinymce mezzanine

我一直在打扰这一点,我显然错过了一些简单的事情。我有一个Django应用程序我在nginx上服务。除了作为TinyMCE HTML编辑器库的一部分的.htm文件外,整个应用程序中的所有其他静态文件都可以正常运行。

未提供文件的路径是: http://www.myurl.org/static/admin/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm/

nginx日志文件指出错误是: 找不到“/home/deployer/cmp/cml/static/admin/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm/index.html”(20:不是目录)“

(顺便说一句,我不知道为什么nginx一直认为文件路径会导致一个目录。)

但是,这个测试文件: http://www.myurl.org/static/admin/tinymce/jscripts/tiny_mce/plugins/advlink/tst.html 服务还好。

我的配置文件是:

upstream app_server_wsgiapp {
    server localhost:8000 fail_timeout=0;
}

server {
    listen 80;
    server_name XX.XXX.X.XX;
     access_log /var/log/nginx/XX.XXX.X.XX.access.log;
     error_log /var/log/nginx/XX.XXX.X.XX.error.log info;
     keepalive_timeout 5;

 #nginx serve up static files and never send to the WSGI server
 location /static {
   include /etc/nginx/mime.types;
   autoindex on;
   alias /home/deployer/cmp/cml/static;
 }

 location / {
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $http_host;
   proxy_redirect off;
   if (!-f $request_filename) {
     proxy_pass http://app_server_wsgiapp;
     break;
   }
 }

 #this section allows Nginx to reverse proxy for websockets
 location /socket.io {
   proxy_pass http://app_server_wsgiapp/socket.io;
   proxy_redirect off;
   proxy_buffering off;

   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";

 }
}

mime类型文件的相关部分:

types {
        text/html                               html htm shtml;
        text/css                                css;
        text/xml                                xml rss;
        image/gif                               gif;
        image/jpeg                              jpeg jpg;
        application/x-javascript                js;
        application/atom+xml                    atom;
        ...
      }

有关获取link.htm的任何建议吗?

更新:在尝试了一些事情后,我注意到nginx错误日志说:“找不到/home/deployer/cmp/cml/static_proxy/index.html”并且请求来自:“GET / static_proxy /?u=myurl.org/static/admin/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm

(为了记录,这不是我的申请,我帮助一位老师朋友在她的Dev保释之后从Gondor迁移到Linode。)

static_proxy来自tinymce lib。但是,这在我的机器上的dev中不是问题。那里的一切都很棒。我尝试添加这个位置块,但这只是一个愚蠢的猜测。

location /static_proxy {
         autoindex on;
         root /home/deployer/cmp/cml;
        }

如果我将上面的root指令更改为

alias /home/deployer/cmp/cml/static;

我在弹出窗口中获取静态目录列表,这似乎是一种改进。

2 个答案:

答案 0 :(得分:0)

我在Wordpress-Mailpoet-TinyMCE上遇到了同样的问题。

稍微挣扎之后,我注意到找不到以 .htm .html 结尾的所有文件。使用不同的后缀(如.jpg或.gif)重命名同一文件时,会成功提供服务。 所以我最后添加了一个特殊的NGINX指令,允许来自mailpoet扩展名的htm和html文件。 这是:

# Mailpoet - tinyMCE quick fix
location ~ /wp-content/plugins/wysija-newsletters/js/tinymce/.*\.(htm|html)$ {
 add_header Access-Control-Allow-Origin *;
 access_log off; log_not_found off; expires 30d;
}

希望它可以帮助别人......

答案 1 :(得分:0)

我在使用nginx时遇到了问题。

以下链接帮助我解决了这个问题。不确定它是否是最好的解决方案,但它适用于我需要它做的事情。

https://techvangelist.net/nginx-global-rewrite-issue-js-css-images-not-found/

我能够通过添加这样的指令来获得工作......

  int sz = sizeof(ts_request_def) + (2 * 1024 * 1024);
   malloc(sz);