nginx不提供HTM文件,而是服务于所有其他静态文件



我已经对此猛烈抨击了,显然我缺少一些简单的东西。我有一个在Nginx上提供的Django应用程序。除了某些.HTM文件是Tinymce HTML编辑器的库中,所有其他静态文件都可以提供。

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

nginx日志文件指出错误是:"/home/deployer/cmp/cmp/cmp/cml/static/admin/tinymce/jscripts/tiny_mce/plugins/plugins/advlink/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;
        ...
      }

有什么建议要获得该链接。

更新:尝试了几件事后,我注意到nginx错误日志说:"/home/deployer/cmp/cmp/cml/static_proxy/index.html都没有找到",请求来自:" get/static_proxy/?u=myurl.org/static/admin/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm

(作为记录,这不是我的应用程序,我正在帮助一位老师的朋友在她的开发后将戈多尔迁移到Linode。)

static_proxy来自Tinymce lib。但是,这在我的机器上的开发人员中不是问题。一切都很好。我尝试在此位置块中添加,但这只是一个挑剔的猜测。

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

如果我将上述根指令更改为

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

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

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

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

我有一个问题,让Timymce与Nginx一起工作。

以下链接帮助我解决了问题。不确定它是否是最好的解决方案,但它可以很好地完成我需要做的事情。

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

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

#tinymce fix
location ~ .(mezzanine|tinymce)/(.+)$ {
    try_files $uri $uri/ /$1/$2;
}

最新更新