You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue项目Nginx配置问题:请求错误跳转到/api/ location

Nginx请求匹配异常问题排查与解决

核心问题出在Nginx的location前缀匹配逻辑上:

你的location /users/配置末尾带斜杠,意味着只有路径以/users/(含末尾斜杠)开头的请求才会匹配这条规则。但前端请求的/users/api/v1/user路径开头是/users(无末尾斜杠),所以这条请求不会命中/users/规则,后续如果被其他逻辑(比如Vue history模式的try_files)改写,就会触发/api/的规则。

而登录类接口能正常匹配,大概率是请求时路径末尾带了斜杠,或者存在隐式的路径补全逻辑。

解决办法

1. 修正location匹配规则(推荐)

把location /users/改成location /users(去掉末尾斜杠),这样所有以/users开头的请求都会命中这条代理规则:

location /users {
    proxy_pass  https://$USER_URL/;
    proxy_redirect off;
    proxy_ssl_protocols TLSv1.2 TLSv1.3;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_intercept_errors  off;
    proxy_buffer_size       4k;
    proxy_buffers           4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_read_timeout 120;
    proxy_connect_timeout 120;
    client_max_body_size 20M;
}

2. 针对异常接口添加精确匹配(适合固定接口场景)

如果不想改动原有前缀匹配,可给异常接口单独加精确匹配规则,确保优先命中:

location = /users/api/v1/user {
    proxy_pass  https://$USER_URL/api/v1/user;
    # 复制上述代理配置
}

location = /users/api/v1/role {
    proxy_pass  https://$USER_URL/api/v1/role;
    # 复制上述代理配置
}

3. 排查前端请求路径

检查Vue项目的publicPath配置,确认请求路径没有被意外改写;同时查看前端请求发送时的实际路径,是否存在自动去斜杠的情况。

验证技巧

在Nginx的根location里添加日志,查看请求的实际路径:

location / {
    access_log /var/log/nginx/access.log main;
    # 保留原有try_files等配置
}

通过日志确认请求路径是否符合预期,快速定位匹配问题。

内容的提问来源于stack exchange,提问作者sultan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:53:10