nginx 上传文件时返回 403 禁止错误
Posted
技术标签:
【中文标题】nginx 上传文件时返回 403 禁止错误【英文标题】:nginx returns 403 forbidden error on file upload 【发布时间】:2019-02-28 05:39:45 【问题描述】:我有一个 php 网站,在 codeigniter 中,它允许用户上传文件。上传适用于大多数文件。但是对于少数文件,nginx 会抛出 403 Forbidden 错误。喜欢
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
这是上传失败的示例 .rb 文件之一
# Sample code from Programing Ruby, page 58
string = <<END_OF_STRING
The body of the string
is the input lines up to
one ending with the same
text that followed the '<<'
END_OF_STRING
如果我从这个文件中删除'<<'
,上传就可以了。这种过滤发生在哪里?
我看过 nginx 错误日志,里面什么都没有。我看过codeigniter日志,那里什么都没有。事实上上传请求没有到达我的 Codeigniter 控制器,所以必须在到达那里之前被 nginx 阻止?
这里是 javascript 中的上传代码
function upload(file, params)
var formData = new FormData();
formData.append("Filedata", file);
$.each(params, function(key, value)
formData.append(key, value);
);
var xhr = new XMLHttpRequest();
var action = "/upload/file";
xhr.upload.onprogress = function(e)
// show progress with e.loaded, e.total
;
xhr.onerror = function(e)
// handle error
;
xhr.open("POST", action, true);
xhr.send(formData);
在服务器端,我现在有简单的代码。
if( !isset($_FILES['Filedata']) || !file_exists($_FILES['Filedata']['tmp_name']) )
die('File not submitted.');
else
// Save file code is here
【问题讨论】:
请看这个链接1and1.com/cloud-community/learn/web-server/nginx/… scalescale.com/tips/nginx/403-forbidden-nginx/# @AnandPandey 我看到了这些链接,但这不是我的问题。就像我说的大多数文件上传正常,没有任何错误。如果我删除“ 您的客户端上传代码是什么样的?您的服务器端上传处理代码是什么样的? @miknik 问题已用代码更新 【参考方案1】:在您的应用程序/config/config.php 中尝试 改变
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
由
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-><';
但要注意应用程序的安全性
【讨论】:
以上是关于nginx 上传文件时返回 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章
AWS S3 getSignedUrl() 返回 403 禁止错误
如何在 Android 中使用 REST API 将图像上传到 S3 存储桶,出现禁止错误:403