nginx转发静态资源时出现404的问题

使用nginx转发服务地址来保证不会出现跨域问题。

location /ggfw/ {
    proxy_pass http://127.0.0.1:9001/;
}

但是通过以上配置之后,虽然能够访问到转发后的地址,但是所有静态资源文件的请求都报404错误,导致反向代理并没有完全成功。

经过多次排查与反复尝试,最终问题还是定位在nginx的路由配置上。具体是,出于nginx的路由路径【/ggfw/】在路由匹配成功之后还会继续往下寻找匹配规则(在上面的配置中找不到)以及在路径中末尾【/】的原因,静态资源的请求地址无法被nginx有效识别,直接导致反向代理失败了,所有的二级地址都没有被代理成功。

解决方法则是修改路由路径的匹配规则(加上往下匹配的通配符【^~】)即可:

location ^~ /ggfw/ {
    proxy_pass http://127.0.0.1:9001/;
}

这样,nginx就能正常代理静态资源的访问,不会出现404请求报错了。

posted @ 2023-10-30 09:54  微风微风  阅读(2628)  评论(0编辑  收藏  举报