nginx代理返回的状态码和直接访问应用返回的状态码不一致

问题描述

直接使用浏览器访问我们的后台接口,在未登陆的情况下接口返回的状态码都是401,而且返回的路径是/user/requireLogin,但是现在我们前端配置了nginx来解决跨域的问题,调用接口居然返回了200, 我想让nginx也同样返回401这个应该怎么做??

问题出现的平台版本及自己尝试过哪些方法

我们的nginx是最新的1.14,平台是nginx

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)


worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       10.67.1.102:80;
        server_name  10.67.1.102;
        rewrite ^(.*)$  https://$host$1 permanent;          
    }
    server {
        listen       10.67.1.102:443;
        server_name  10.67.1.102;
        client_max_body_size   20m;
        proxy_redirect      off;
        proxy_set_header    Host                    $host;
        proxy_set_header    X-Real-IP               $remote_addr;
        proxy_set_header    X-Forwarded-Host        $host:$server_port;
        proxy_set_header    X-Forwarded-Server      $host;
        proxy_set_header    X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header     X-Forwarded-Proto $scheme;
        proxy_pass_header   Set-Cookie;
        proxy_pass_header   P3P;
        proxy_buffering     off;  
        proxy_intercept_errors off; 
        ssl          on;
        ssl_certificate        ./server.crt;
        ssl_certificate_key    ./server.key;        

        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }

        location /WebApi/jjjj/static/ {
            alias  E:/svn/06_code/dist/ZJYD/;
            index  index.html index.htm;

        }
        #接口转发
        location /jjjj/api/v1 {
            add_header 'Access-Control-Allow-Origin' '$http_origin';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Content-Type,*';    
            proxy_pass  https://10.67.1.101/jjjj/api/v1/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location = /user/requireLogin {
            alias html/401.html;
        }



    }





}

你期待的结果是什么?实际看到的错误信息又是什么?

我现在就想让nginx返回和直接访问后台接口一样的状态码,这个应该怎么做??一点头绪都没有

阅读 5.4k
1 个回答

试试这个

location = /user/requireLogin {
    error_page 401 html/401.html;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题