我一直在打扰这一点,我显然错过了一些简单的事情。我有一个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;
我在弹出窗口中获取静态目录列表,这似乎是一种改进。
答案 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);