nginx代理api接口地址,但是接口一直404

环境:

在同一台linux服务器上部署了两个node服务,一个服务监听4000端口,负责渲染ejs模板,一个服务监听8080端口,负责提供api

nginx配置:

location / {
    proxy_pass  http://58.87.67.xx:4000;   #node server
}

location api/ {
    rewrite  ^.+api/?(.*)$ /$1 break;
    proxy_pass  http://58.87.67.xx:8080;    #node api server
    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;
}

服务器已添加https证书
需求:

 在前端发起以api开头的请求(如/api/index),nginx rewrite请求地址转发至8080端口服务,然后node来负责请求处理,重写之后的地址则没有/api(如/index)

现遇到的问题是请求的接口全部404,不知道是不是匹配规则写的是否有问题,也查了很多文档,但是都没有解决问题,还请各位大佬帮忙看一下,多谢!

阅读 17.8k
2 个回答
location /api/ {
        proxy_pass http://58.87.67.xx:8080/; #以 / 结尾就不会带/api/了
}

去掉 rewrite ^.+api/?(.*)$ /$1 break;试试吧

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