nginx 反向代码后,验证码不显示

问题描述:A服务做反向代码服务器,需求是代码B的访问,配置完成后,验证码没有显示

nginx 配置如下:

##http 代码段
upstream reports{
    server B服务IP加端口 weight=4 max_fails=2 fail_timeout=30s;
    ip_hash;
}



server {
    listen 80;
    server_name **;   //A服务IP   
    location /report {
       proxy_pass http://reports;
       proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host:$server_port;
       proxy_connect_timeout 300s;
       proxy_send_timeout 300s;
       proxy_read_timeout 300s;
       proxy_http_version 1.1;

     }

初次配置如上,验证码无法访问。

查看验证码的访问方式

是BASE64编码,前台获取到编码后,再转图片。此时的路径是 B服务IP/api**,而不是B服务IP/report*,所以无法请求到对应编码,方法调用不通。查看nginx 错误日志也可以发现此问题。

2020/05/12 14:26:10 [error] 21601#0: *150 open() "/usr/local/nginx/api/app/b/v1/user/login/get/image/code" failed (2: No such file or directory), client: 10.25.11.10, server: B服务IP, request: "GET /api/app/b/v1/user/login/get/image/code?_t=1589264769 HTTP/1.1", host: "B服务IP", referrer: "B服务IP/report/"

因为nginx中没有配置B服务/api*  ,所以NGINX在本地查找相关文件,是找不到的。

所以只需要在配置中新增一个B服务/api*的访问代码即可。

 location /api {
        proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass B服务IP加端口;
    }

至此,问题解决。

注:本地文件代理;root和alias 远程代理:proxy_pass

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值