nginx反向代理后接口No handler found for GET

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

nginx作为反向代理时接口映射找不到接口


一、报错信息

在这里插入图片描述

二、需求

1.接口代理情况

前端调用 http://xxx.xx.xx:9007/dbswitch/xxx 需要代理到http://xxx.xxxx.xxx:9088/dbswitch/xxx

2.错误原因分析

后端能看到报错信息,说明代理是成功的,只是在代理的过程中,因为配置等原因造成了接口地址变化

三 解决方法

1. proxy_pass的坑

理解 proxy_pass http://192.168.1.212 和 proxy_pass http://192.168.1.212/ 的区别

server {
  listen 80;
  server_name xy.xxx.com; // 接口的域名
  access_log  /data/www/logs/nginx/access.log main;
  add_header Access-Control-Allow-Origin http://xy.xxx.com; // 允许的域名跨域
  add_header Access-Control-Allow-Credentials true;
  include nginx_xxx.conf;
  location / {
    #配置1 proxy_pass http://192.168.1.212:8136;
    #配置2 proxy_pass http://192.168.1.212:8136/;
    include nginx_proxy.conf;
  }
  error_page   500 502 503 504  /502.html;
  location = /50x.html {
    root   html;
  }
}

当接口请求中location为 / 来匹配时,如果请求是 http://xy.xx.com/xxx的时候,1和2的配置都会指向http://192.168.1.212:8136/xxx

2.当location存在值时

server {
  listen 80;
  server_name xy.xxx.com; // 接口的域名
  access_log  /data/www/logs/nginx/access.log main;
  add_header Access-Control-Allow-Origin http://xy.xxx.com; // 允许的域名跨域
  add_header Access-Control-Allow-Credentials true;
  include nginx_xxx.conf;
  location /bus/ {
    #配置1 proxy_pass http://192.168.1.212:8136;
    #配置2 proxy_pass http://192.168.1.212:8136/;
    include nginx_proxy.conf;
  }
  error_page   500 502 503 504  /502.html;
  location = /50x.html {
    root   html;
  }
}

当location块使用了 /bus/ 作为uri变量的值来匹配,如果请求为http://wy.xxx.com/bus/xxx
如果是配置1,那么指向的地址为:http://192.168.1.1212:8136/bus/xxx,
如果为配置2,那么指向地址为http://192.168.1.1212:8136/xxx


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值