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

Nginx配置Mock服务返回指定JSON时出现404错误的技术问询

Nginx作为Mock服务处理POST请求返回指定JSON的解决方案

我来帮你搞定这个问题!你原来的配置返回404,主要有两个原因:一是alias指令默认只针对GET请求返回静态文件,POST请求过来时Nginx不会自动用静态文件响应;二是你需要确认/opt/test/response.json文件是否存在,以及Nginx进程有没有读取它的权限。

下面是几个可行的配置方案,你可以根据自己的情况选择:

方案一:强制让POST请求返回静态JSON文件

这个方案不需要额外安装模块,用Nginx原生指令就能实现:

location /ext-address {
    # 只处理POST请求,如果你需要GET也返回,去掉这个if判断即可
    if ($request_method = POST) {
        # 指定响应的Content-Type为JSON,避免浏览器解析成纯文本
        default_type application/json;
        # 直接返回指定文件的内容,200是HTTP成功状态码
        return 200 /opt/test/response.json;
    }
}

或者用root配合rewrite的写法,效果完全一致:

location /ext-address {
    if ($request_method = POST) {
        rewrite ^ /response.json break;
        root /opt/test;
        default_type application/json;
    }
}

方案二:使用echo模块(需提前安装)

如果你的Nginx安装了nginx-echo-module(比如OpenResty这类集成包会自带),可以用更简洁的方式实现:

location /ext-address {
    if ($request_method = POST) {
        default_type application/json;
        echo_file /opt/test/response.json;
    }
}

必做的检查步骤

  • 文件权限验证:确保Nginx运行的用户(通常是www-data或nginx)能读取目标JSON文件。可以执行以下命令调整权限:
    chmod 644 /opt/test/response.json
    chown www-data:www-data /opt/test/response.json
    
  • 配置语法检查:修改配置后,先执行nginx -t确认没有语法错误,再执行nginx -s reload让新配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:38