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

在Linux Nginx服务器部署ASP.NET Core Web API遇404问题求助

Linux Nginx部署ASP.NET Core Web API 404错误排查方案

1. 验证ASP.NET Core服务状态

  • 执行systemctl status <你的API服务名>,确认服务处于active(running)状态。若未启动,通过journalctl -u <你的API服务名> -f查看启动日志定位问题。
  • 手动启动应用测试:进入API发布目录,执行dotnet <你的API程序集名称>.dll,观察是否能正常启动。同时在服务器内部用curl http://localhost:<应用监听端口>/api/<你的接口路径>测试,确认应用自身可响应请求。

2. 检查Nginx反向代理配置

  • 打开Nginx站点配置文件(通常在/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下),确保反向代理规则正确:
    location / {
        proxy_pass http://localhost:<应用监听端口>; # 需与ASP.NET Core监听地址端口一致
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
  • 执行nginx -t验证配置语法合法性,有错误则修正后重启Nginx:systemctl restart nginx。
  • 确认服务器防火墙已开放Nginx监听的端口(如80/443),避免请求被拦截。

3. 确认ASP.NET Core应用配置

  • 检查Program.cs或appsettings.json,确保应用监听地址设置为http://0.0.0.0:<端口>(允许所有IP访问,若仅监听localhost可能导致Nginx代理失败)。示例代码:
    var builder = WebApplication.CreateBuilder(args);
    builder.WebHost.ConfigureKestrel(options =>
    {
        options.ListenAnyIP(<应用监听端口>);
    });
    
  • 验证API路由配置:检查控制器上的[Route("api/[controller]")]属性及Action的路由特性,确保请求URL与路由规则匹配。

4. 修正文件权限问题

  • 确保API发布目录及文件的权限允许服务运行用户(通常为www-data)访问:
    chown -R www-data:www-data /path/to/your/api
    chmod -R 755 /path/to/your/api
    

5. 查看日志定位细节

  • 查看Nginx日志:/var/log/nginx/access.log确认请求是否到达Nginx,/var/log/nginx/error.log排查代理过程中的错误。
  • 查看ASP.NET Core应用日志(若配置了日志输出),检查是否有请求到达但路由不匹配的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:16:05