nginx代理后ajax请求404(已解决)

公司PHP老项目,有个/Api/Avatar的接口地址,返回json格式的玩家头像信息
由于老旧的业务原因这个接口很复杂,查询很多表,最后返回信息虽然很正常,但导致PHP压力很大,为了缓解PHP压力,用golang重写了这个接口代码是这样的:

mux := http.NewServerMux()
mux.HandleFunc("/Api/Avatar", func(w http.ResponseWriter, r *http.Request) {
    //具体业务,也是返回json
})
err := http.ListenAndServe(":1234", mux)
if err != nil {
    fmt.Print(err)
}

简单到爆炸的业务
但是!
使用nginx代理转发后就出问题了

        location /Api/Avatar {
                proxy_pass http://127.0.0.1:1234/Api/Avatar;
                proxy_set_header X-real-ip $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

1.使用浏览器直接访问接口地址是正常的
2.但是使用jq的ajax就是404,同域名下没有跨域问题

$.ajax({
    url: '/Api/Avatar',
    //.....
    success: function(r) {
        //....
    }
});

目前未能解决,就还是给到PHP处理了,等我解决了再来说原因,也期望有这方面经验的小伙伴支支招


2022.5.26:go里的业务问题,不是nginx配置的问题,重写解决了

讨论数量: 4
Summer
location = /Api/Avatar {
        proxy_pass http://127.0.0.1:1234/Api/Avatar;
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

加个 = 号意味着完全匹配,优先级最高。参考 —— 博客:Nginx 配置常用参数,看这一篇就够了

1年前 评论
mahaiyin (楼主) 1年前

哪里写错了呗

1年前 评论
mahaiyin (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!