File upload Nginx阻止文件上载到静态页面:405不允许

File upload Nginx阻止文件上载到静态页面:405不允许,file-upload,nginx,upload,php,File Upload,Nginx,Upload,Php,我的Nginx服务器有问题。我安装了一台新服务器,并认为我安装的与旧服务器相同。但是,从那时起,我无法将文件上载到静态页面。我在index.php中有一个上载函数。当我显式调用index.php时,它仍然有效,但当我只调用/,它会给我一个405错误 我在互联网上看到过很多讨论,都归结为nginx不允许POST请求访问静态文件。但是,我的安装接受对静态文件的POST请求,但不接受文件上载。澄清一下,这是我目前的情况: +----------------------+-------------+--

我的Nginx服务器有问题。我安装了一台新服务器,并认为我安装的与旧服务器相同。但是,从那时起,我无法将文件上载到静态页面。我在index.php中有一个上载函数。当我显式调用index.php时,它仍然有效,但当我只调用/,它会给我一个405错误

我在互联网上看到过很多讨论,都归结为nginx不允许POST请求访问静态文件。但是,我的安装接受对静态文件的POST请求,但不接受文件上载。澄清一下,这是我目前的情况:

+----------------------+-------------+------------------+
||普通帖子|带文件上传|
+----------------------+-------------+------------------+
|请求/|允许|允许|
|请求index.php |允许| 405不允许|
+----------------------+-------------+------------------+
它可能没有添加任何内容,但为了完整性:我也在这台服务器上运行WordPress站点,自从迁移服务器后,我就无法上传新媒体

日志文件(
/var/log/nginx/error.log
/var/log/php5 fpm.log
/var/log/syslog
)没有提供任何信息。后来,我也为FastCGI池启用了日志记录,在访问日志中,没有对静态页面的POST请求的记录。所以nginx必须在它们到达FastCGI之前阻止它们

相关的PHP ini设置:

启用上的数据读取
文件上传到
max_文件上传20
上载\u最大\u文件大小20M
上传\u tmp\u目录无值
我怎样才能让它再次工作?


补充资料 我的旧服务器和新服务器之间存在一些差异(可能更多,但我不知道):

  • 在nginx之前,我必须使用
    fastcgi_pass127.0.0.1:9000-现在,这已经不起作用了,但我正在使用
    fastcgi\u pass unix:/var/run/php5-fpm.sock。我不知道这是为什么,也不知道这是否重要
  • 我从源代码构建了nginx。以下是不同的安装,首先是旧的:

    $nginx-V
    nginx版本:nginx/1.4.6(Ubuntu)
    由GCC4.8.2(Ubuntu 4.8.2-16ubuntu6)构建
    TLS SNI支持已启用
    配置参数:--使用cc opt='-g-O2-fstack protector--param=ssp buffer size=4-Wformat-Werror=format security-D_FORTIFY_SOURCE=2'--使用ld opt='-Wl,-b符号函数-Wl,-z,relro'-prefix=/usr/share/nginx--conf path=/etc/nginx/nginx.conf--http log path=/var/log/nginx/access.log--error log path=/var/log/nginx/error.log--lock path=/var/lock/nginx.lock--pid path=/run/nginx.pid--http client body temp path=/var/lib nginx/body--http fastcgi temp=/var/lib nginx/fastcgi--http代理临时路径=/var/lib/nginx/proxy--http scgi临时路径=/var/lib/nginx/scgi--http uwsgi临时路径=/var/lib/nginx/uwsgi--带调试--带pcre jit--带-ipv6--带-http_ssl_模块--带-http_存根_状态_模块--带-http_realip_模块--带-http_添加_模块--带-http_dav_模块--带-http_geoip_模块--with-http_gzip_静态_模块——with-http_图像_过滤器_模块——with-http_spdy_模块——with-http_子模块——with-http_xslt_模块——with-mail_ssl_模块——添加模块=/build/buildd/nginx-1.4.6/debian/modules/nginx-auth-pam——添加模块=/build/buildd/nginx-1.4.6/debian/modules/nginx-dav-ext-module--add module=/build/buildd/nginx-1.4.6/debian/modules/nginx-echo--add module=/build/buildd/nginx-1.4.6/debian/modules/nginx-upstream-fair--add module=/build/buildd/nginx-1.4.6/debian/modules/ngx\u http\u substitutions\u filter\u module
    
    新的:

    $nginx-V
    nginx版本:nginx/1.6.0
    由GCC4.8.2(Ubuntu 4.8.2-19ubuntu1)构建
    TLS SNI支持已启用
    配置参数:--使用cc opt='-g-O2-fstack protector--param=ssp buffer size=4-Wformat-Werror=format security-D_FORTIFY_SOURCE=2'--使用ld opt='-Wl,-b符号函数-Wl,-z,relro'-conf path=/etc/nginx/nginx.conf--http log path=/var/log/nginx/access.log--error log path=/var/log/nginx/error.log--lock path=/var/lock/nginx.lock--pid path=/run/nginx.pid--http客户端主体临时路径=/var/lib/nginx/body--http fastcgi temp路径=/var/lib nginx/fastcgi--http代理临时路径=/var/lib nginx/proxy--http scgi temp path=/var/lib/nginx/scgi——http uwsgi temp path=/var/lib/nginx/uwsgi——带调试——带pcre jit——带-ipv6——带-http_ssl_模块——带-http_存根_状态_模块——带-http_realip_模块——带-http_添加_模块——带-http_geoip_模块——带-http_geoip_模块——带-http_gzip_静态_模块——带-http_图像过滤器_模块--with-http_spdy_模块——with-http_sub_模块——with-http_xslt_模块——with mail——with-mail_ssl_模块——add模块=/home/camilstaps/nginx模块/nginx auth pam——add模块=/home/camilstaps/nginx模块/ngx http_替换过滤器模块——with-http_mp4_模块--with-http_flv_模块
    
  • 旧PHP版本:

    $php5-v
    PHP 5.5.9-1ubuntu4.3(cli)(构建时间:2014年7月7日16:36:58)
    版权所有(c)1997-2014 PHP集团
    Zend Engine v2.5.0版权所有(c)1998-2014 Zend Technologies
    Zend OPcache v7.0.3版权所有(c)1999-2014,由Zend Technologies提供
    
    新的:

    $php5-v
    PHP 5.5.9-1ubuntu4.3(cli)(构建时间:2014年7月7日16:36:58)
    版权所有(c)1997-2014 PHP集团
    Zend Engine v2.5.0版权所有(c)1998-2014 Zend Technologies
    

最后,我仍然可以访问我的旧安装。因此,如果您想查看某个文件的内容或某个命令的输出,这是可能的。

问题是我将http_mp4_模块的指令放在了
位置/
块中:

location / {
    ...
    mp4;
}
显然,这在某种程度上造成了冲突