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

无法从公网访问部署在Ubuntu VPS上的Asp.Net Api如何解决

故障排查及解决步骤

第一步:确认ASP.NET Core应用的监听地址

  • 默认情况下ASP.NET Core应用只会监听localhost:5000/127.0.0.1:5000,不会接收来自外部网卡的请求,这是最常见的故障原因
  • 修改监听配置的两种方式:
    1. 启动时追加参数:dotnet your_app.dll --urls http://0.0.0.0:5000
    2. 在Program.cs/Startup.cs中硬编码配置:builder.WebHost.UseUrls("http://0.0.0.0:5000");
  • 验证监听状态:执行ss -tulpn | grep 5000,如果返回结果中监听地址为127.0.0.1:5000说明配置未生效,如果为0.0.0.0:5000说明已正常监听所有网卡

第二步:确认系统防火墙及VPS安全组配置

  • Ubuntu默认ufw防火墙可能未开放80、5000端口,执行以下命令开放端口:
    ufw allow 80/tcp
    ufw allow 5000/tcp
    ufw reload
    
  • 登录VPS服务商控制台,确认安全组入站规则已经开放80、5000端口的TCP访问,源地址设为0.0.0.0/0(或指定的访问网段)

第三步:验证Nginx配置正确性

  • Nginx反向代理配置参考示例如下:
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        server_name _; # 可替换为你的公网IP或绑定的域名
    
        location / {
            proxy_pass http://127.0.0.1:5000;
            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验证语法是否正确,无误后执行systemctl reload nginx重载配置
  • 验证Nginx运行状态:执行systemctl status nginx,确认服务处于active运行状态

第四步:本地验证转发是否生效

  • 在VPS本地执行curl http://127.0.0.1:80,如果能正常返回API结果说明Nginx转发配置正常,故障点在外部网络访问限制
  • 如果本地curl 80端口也报错,可查看Nginx错误日志定位问题:tail -f /var/log/nginx/error.log

第五步:排查运营商端口限制

  • 如果以上配置都无误,可临时将Nginx监听端口改为8080,开放对应防火墙和安全组规则后尝试访问公网IP:8080,如果可以访问说明运营商封禁了80端口,可更换端口或备案后申请解封

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:54:00