我们正在运行Nginx + FastCgi作为Drupal站点的后端。 一切似乎都很好,除了这个网址。 HTTP:///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.php
(我们在Drupal中使用TinyMCE模块,并在以下时调用上面的url 用户尝试上传图片)
当我们使用Apache时,一切正常。 但是,nginx会对上面的url二进制文件进行处理并尝试下载它。 (我们已经验证了url指出的文件是一个有效的PHP文件)
知道这里有什么不对吗?
我认为这与NGINX配置有关,但不完全确定它是什么。
非常感谢任何帮助。
配置: 这是nginx配置文件的片段:
root /var/www/;
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
error_page 404 index.php;
location ~*
\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$
{
deny all;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
access_log off;
expires 7d;
}
location ~* ^.+\.(css|js)$ {
access_log off;
expires 7d;
}
location ~ .php$ {
include /etc/nginx/fcgi.conf;
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
location ~ /\.ht {
deny all;
}
答案 0 :(得分:2)
成功
location ~ \.php$ {
而不是
location ~ .php$ {
答案 1 :(得分:1)
如果没有这样做,还要确保您在端口8888上运行fastcgi。您可以通过以下方式检查:
netstat -la | grep :8888
如果您收到如下回复,那就没问题了。
tcp 0 0 localhost:9000 *:* LISTEN
或者尝试以下操作并查看它正在侦听的端口:
netstat -la | grep LISTEN
答案 2 :(得分:0)
也许php文件正在运行但生成二进制文件。这个脚本生成图像吗?很难说没有看到一些配置。