手动上传图片到nginx下可访问,程序上传后访问图片报403

博客内容讲述了在手动或程序上传图片后,访问图片出现403 Forbidden错误的原因和解决方案。问题根源在于服务器权限,提供了两种解决办法:一是更改文件夹权限,允许所有用户访问;二是修改nginx运行用户,确保其有访问文件夹的权限。在应用解决方案后,成功访问图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 首先查看文件权限
#指令如下

ls -l
2. 初步确定是服务器权限问题

403 forbidden错误是禁止读取访问,也就是说服务器理解了请求,但是不允许访问。

先看下初始nginx配置:

#user nobody; # 注意这里,nginx没有使用什么身份运行

http{
    ...
    server{
        ...
        #配置图片访问
        location ~ \.(gif|jpg|jpeg|png|svg){
            root /data/images/;
            access_log /data/nginx/logs/images.log;#log address
            proxy_store_access user:rw group:rw all:rw;
            proxy_temp_path         /data/images/;#temp proxy path
            ...
        }
    }
}

配置图片位置:data/images

解决

先确定文件夹是否存在,出现这个问题的原因是文件访问权限限制。

这个取决于,创建文件夹[/data/images]的过程中使用的什么用户。

2.1 解决方案一:更改文件权限

修改相关文件夹的访问权限(/data/images),使任何用户都可以访问

chmod -R 755 /data/images
2.2 解决方案二:修改nginx运行用户

修改nginx运行用户

在nginx.conf配置文件中,在开头添加这一句:

user root

当然,创建该文件夹的用户也可以,总之该用户可以访问这个文件夹。

修改之后,记得重启nginx。

修改之后,访问成功。

### 微信小程序上传图片至七牛云状态码不一致解决方案 当使用微信小程序向七牛云上传图片时,如果遇到返回的状态码为200或307的情况,这通常意味着服务器端发生了重定向或是成功响应。然而,在实际开发过程中,这种状态码的差异可能引发客户端逻辑混乱。 对于HTTP 307 Temporary Redirect临时重定向状态码而言,表示请求被暂时转移到另一个URI上,并且该操作应该是可追踪回原地址的。这意味着客户端应当自动跟随这个重定向去访问新位置[^1]。但在某些情况下,特别是涉及到跨域资源加载或者特定平台(如微信小程序)的安全策略限制下,可能会阻止默认行为并导致预期之外的结果。 针对上述情况,建议采取如下措施来解决问题: #### 修改前端代码适应不同环境下的API调用 为了确保兼容性和稳定性,可以在发起`wx.uploadFile()`之前先判断当前运行环境是否支持直接处理307跳转。如果不支持,则手动解析Location头字段中的URL完成文件传输过程。具体实现可以通过拦截器或者其他中间件机制捕获异常后的回调函数内执行额外的操作。 ```javascript // 判断是否存在location header用于处理307 redirect场景 const handleRedirect = (res) => { const locationHeader = res.header['Location']; if (!locationHeader || !/^https?:\/\//i.test(locationHeader)) return Promise.reject('Invalid Location Header'); // 使用新的url重新尝试上传 return new Promise((resolve, reject) => { wx.uploadFile({ url: locationHeader, filePath: 'your_file_path', name: 'file', success(res){ resolve(JSON.parse(res.data)); }, fail(err){ reject(err); } }); }); }; ``` #### 后端配置CORS及调整响应头部设置 考虑到安全因素以及浏览器同源政策的影响,适当放宽后端接口关于跨域资源共享(Cross-Origin Resource Sharing,CORS)的相关设定也是必要的。允许来自指定域名的小程序合法获取所需资源的同时,还需注意检查每次响应中携带的内容类型(Content-Type),确保其符合接收方期望格式。 另外,为了避免不必要的重定向发生,可在Nginx或其他反向代理层面上通过配置规则固定目标路径,从而减少因版本迭代等原因引起的变动影响用户体验。 最后值得注意的是,虽然这里讨论的重点在于解决由特殊状态码引起的问题,但同样重要的是要遵循最佳实践指南构建健壮的应用架构,比如利用错误日志记录工具监控线上表现、定期审查依赖库安全性等措施都能有效提升整体质量水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值