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

Nginx GET请求/service_data返回404 Not Found,求配置修正方案

Nginx 404问题排查与解决

问题场景

当前Nginx配置如下:

http {
    server {
        listen 80;
        location /service_data {
            root /opt;
            index service_state;
        }
    }
}

events {}
  • 执行 curl ip_address:80 返回默认页面,符合预期;
  • 执行 curl ip_address:80/service_data 时返回404错误,但/opt/service_state文件确实存在,内容为:
First line
Second line

期望访问/service_data时返回该文件内容。执行nginx -T验证配置语法正常。

错误原因

当前配置的核心问题在于**root指令的路径拼接逻辑**:
当location匹配/service_data时,root /opt会让Nginx尝试访问的路径是 /opt/service_data/service_state,而实际文件路径是/opt/service_state,路径不匹配导致404。

解决方案

提供三种可行的修改方案,任选其一即可:

方案一:使用alias替换root

alias会直接将location匹配的路径部分替换为指定路径,而非拼接:

http {
    server {
        listen 80;
        location /service_data {
            alias /opt;
            index service_state;
        }
    }
}

此配置下,访问/service_data时,Nginx会直接查找/opt/service_state文件。

方案二:使用try_files直接指定目标文件

跳过index的路径拼接逻辑,直接指定要返回的文件:

http {
    server {
        listen 80;
        location /service_data {
            root /opt;
            try_files /service_state =404;
        }
    }
}

try_files会先尝试访问/opt/service_state,不存在再返回404。

方案三:调整文件路径(可选)

如果允许修改文件位置,将/opt/service_state移动到/opt/service_data/service_state,保持原有配置不变即可生效。

修改配置后,执行sudo nginx -s reload重启Nginx使配置生效,再次访问/service_data即可获取目标文件内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:10:27