Nginx权限问题导致前端上传文件时报<html> <head> <title>500 Internal Server Error</title> </head>

问题出现

        第一次发现这个问题的时候是我在做其他的一个新增功能,然后我发现素材不够,我就想额外在新增点素材,就要需要使用上传文件这个功能,上传一点素材,结果发现就报以下错误

<html>
    <head>
        <title>500 Internal Server Error</title>
    </head>
    <body>
        <center>
            <h1>500 Internal Server Error</h1>
        </center>
        <hr>
        <center>nginx/1.27.0</center>
    </body>
</html>

排查问题

        当时看到这个的第一反应是 500 的话就是服务器的问题,那么就是后端出问题了,所以我就各种排查,但都没得到解决。于是我就使用postman进行测试,先是直接进行后端发起请求

结果发现请求能走通,我又把请求路径换成前端发起的

        postman也是报500,那么这样就能排除后端是没问题的,问题肯定是出在了网关和nginx之间。因为我们都知道,真实的请求的流程如图所示

        那么开始怀疑网关,但如果是网关的话,我因为该网关下的所有请求都会进行拦截然后判断,但是我看网关微服务并没有任何拦截,也没有任何请求走到了网关,所以网关也排除了。

解决方法        

        接下来就是nginx,但因为前端的项目通过nginx做反向代理,我其它的功能都没问题,证明nginx启的前端服务是没问题,那么问题就出现在nginx本身上,查了很多资料发现是因为nginx去访问临时文件目录的时候没有权限导致的,将权限放开即可

sudo chown -R www-data:www-data /usr/local/var/run/nginx/client_body_temp/
sudo chmod -R 755 /usr/local/var/run/nginx/client_body_temp/

        需要根据系统和Nginx用户调整 www-data 为适当的用户

        还要确保 client_body_temp 目录存在。如果不存在,可以手动创建它:

sudo mkdir -p /usr/local/var/run/nginx/client_body_temp/

        重启nginx即可,这个时候一定要注意,重启nginx的时候一定要加上 sudo 这个指令,这样才能给nginx足够的权限,否则依然会报500

        目前这个问题只出现在了Mac版本的nginx上,windows版本的nginx暂时没发现过这个问题,不过有些文件太大的nginx做了限制,如果由于文件太大导致无法上传,可以配置nginx.conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值