Nginx下上传图片404

功能本地测试的时候上传没问题,但是部署到线上就报404,

因为报404返回的页面是原始的页面

而并不是前端定义的404页面 ,于是判断可能是Nginx拦截了报的404

在Nginx的log下找到了

*26054 open() "/var/lib/nginx/tmp/client_bod偶y/0000000005" failed (13: Permission denied)

这样的报错,大概意思就是/var/lib/nginx/tmp/client_body这个目录没有权限访问,

把权限加上就可以正常上传图片了。

附上解决地址:https://www.boboidea.com/blog/3

### 实现Nginx中的图片上传 为了实现在 Nginx 中处理图片上传的功能,通常的做法不是直接由 Nginx 处理文件上传逻辑,而是让前端应用(如 PHP、Node.js 或 Python 应用程序)负责接收并保存上传的文件。然而,在某些场景下确实可以通过配置 Nginx 来辅助这一过程。 #### 使用 `client_max_body_size` 控制最大上传尺寸 当涉及到大文件传输时,必须调整客户端请求体的最大允许大小,默认情况下这个值可能过低无法满足需求: ```nginx http { ... client_max_body_size 8m; # 设置单个请求能携带的数据量上限为8MB } ``` 上述指令应放置于 http 块内以全局生效,也可以放在 server 或 location 块里针对特定站点或路径做更细致控制[^1]。 #### 创建用于存储上传图像的位置 假设有一个 Web 应用位于 `/var/www/html/upload.php` 接收 POST 请求并将接收到的二进制数据写入磁盘上的指定目录,则可以在该位置之前定义一个匹配规则来转发这些请求给后端脚本执行实际操作: ```nginx server { listen 80; server_name localhost; location /upload/ { alias /path/to/save/images/; if (!-f $request_filename){ rewrite ^/(.*)$ /upload.php last; } try_files $uri @backend; } location @backend{ fastcgi_pass unix:/run/php-fpm.sock; include snippets/fastcgi-php.conf; } } ``` 这段配置意味着任何发送至 `/upload/*` 的 GET 请求会尝试直接提供静态资源;而其他方法比如 PUT 和 POST 则会被重定向到 `upload.php` 进行进一步处理。 #### 安全性和性能优化考虑 考虑到安全性因素,应当限制哪些 IP 地址能够向服务器提交内容以及验证用户身份等方式防止恶意攻击者滥用服务。另外还可以利用缓存机制减少重复读取相同文件造成的负载压力,并开启压缩功能加快响应速度。 对于频繁访问的小型图形素材来说,启用浏览器级别的长期缓存策略是非常有益处的: ```nginx location ~* \.(?:jpg|jpeg|gif|png|webp)$ { expires max; add_header Cache-Control "public"; } ``` 以上措施有助于提高用户体验的同时也减轻了源站的压力[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值