当前位置: 代码网 > 服务器>服务器>Nginx > nginx代理无法访问后端服务的解决

nginx代理无法访问后端服务的解决

2024年06月17日 Nginx 我要评论
nginx代理无法访问后端服务现象nginx配置location网页显示css/js文件无法加载,但是后端服务访问正常,估计是后端服务将后缀路径写死导致nginx无法跳转报错2022/08/05 13

nginx代理无法访问后端服务

现象

nginx配置location网页显示css/js文件无法加载,但是后端服务访问正常,估计是后端服务将后缀路径写死导致nginx无法跳转

报错

2022/08/05 13:00:24 [error] 3389#e: *1092213 upstream timed out (110: connection timed out) while reading upstream, client: 10.6. 18.19, server: localhost, request: “post /rcenter/rpt/api/showreport http/1.1”, upstream: “http://10.6.6.65:8880/rcenter/rpt/api/showreport” host: “10.6.6.67”

处理

以下这种也写法也可以,但是配置有多个location就会乱了

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass "http://域名+端口";

最好一个rewrite针对具体的location

location /prod {
        proxy_pass http://10.1.5.17:20005;
        rewrite ^/prod(.*) http://10.1.5.17:20005/$1 permanent;
}

解决nginx代理后,前端拿不到后端自定义的header

先说结论,因为前端和nginx对接,所以需要在nginx添加如下配置向前端暴露header

add_header 'access-control-expose-headers' 'authorization'

排查过程

1.后端设置了authorization 的响应头作为token的返回,前后端本地联调没有问题

response.setheader("authorization", objects.equals(tokennew, "") ?token:tokennew);

2. 发布到服务器上,开启nginx代理,结果前端返回的接口拿不到自定义的header,然后到network里面一看,明明有啊

3.百度了一下,网上说后端设置属性add_header 'access-control-expose-headers' 'authorization'

结果还是不行,为何?突然想到我是用nginx代理的,前端直接访问的nginx,是不是要在nginx中设置

4.果然,如果用nginx代理,需要在nginx中设置,如果不用nginx代理直接在后端响应中设置

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com