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

Angular+.NET Core远程访问遇ERR_CONNECTION_REFUSED问题求助

排查步骤与解决方案

我来帮你一步步梳理这个问题——本地访问一切正常,但远程能打开页面却连不上后端,这种情况基本都是网络绑定、地址配置或者反向代理规则出了问题,咱们逐个排查:

1. 先确认.NET Core后端的监听地址

.NET Core发布成exe后,默认大概率只监听127.0.0.1(也就是本机localhost),这就导致只有服务器自己能访问后端,远程PC根本连不上。你需要让后端监听所有可用网卡或者指定服务器的局域网/公网IP:

  • 方法一:启动后端exe时手动指定监听地址:
    YourBackendApp.exe --urls "http://0.0.0.0:5000;https://0.0.0.0:5001"
    
    这样后端会绑定所有网卡的5000(HTTP)和5001(HTTPS)端口,远程就能正常访问了。
  • 方法二:在后端的appsettings.json里配置固定监听地址,避免每次启动加参数:
    "Kestrel": {
      "Endpoints": {
        "Http": {
          "Url": "http://0.0.0.0:5000"
        },
        "Https": {
          "Url": "https://0.0.0.0:5001"
        }
      }
    }
    

2. 检查Angular前端的API地址配置

这是最常见的坑:前端调用后端的地址是不是写死成了http://localhost:5000?远程PC访问时,浏览器会直接请求自己的localhost:5000,肯定会报连接拒绝!

  • 打开Angular生产环境配置文件src/environments/environment.prod.ts,把API地址改成服务器的域名:
    export const environment = {
      production: true,
      apiUrl: 'https://test.example.net/api' // 推荐配合Nginx代理使用
      // 或者直接写http://test.example.net:5000,不过用代理更安全
    };
    
    修改后重新打包前端,部署到IIS。

3. 优化Nginx配置,统一代理前后端请求

现在你的Nginx只代理了前端4200端口,建议让Nginx同时接管后端API请求,这样前端不用直接访问5000端口,既安全又能避免跨域和端口暴露的问题:
修改nginx.conf的server块,新增一个location /api规则:

server {
    listen 443 ssl;
    server_name test.example.net;
    # 原有SSL配置保持不变...

    # 代理前端页面请求
    location / {
        proxy_pass http://127.0.0.1:4200;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }

    # 新增:代理后端API请求
    location /api {
        proxy_pass http://127.0.0.1:5000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

这样前端调用https://test.example.net/api/xxx时,Nginx会自动转发到后端的http://127.0.0.1:5000/api/xxx,远程PC只需要访问443端口即可,甚至可以不用给外部开放5000端口(服务器本地能访问就行)。

4. 验证后端HTTPS重定向的合理性

你后端代码里加了app.UseHttpsRedirection(),如果后端没有配置HTTPS监听端口,或者远程HTTP请求重定向时出问题,也可能导致连接失败:

  • 如果用Nginx代理HTTPS,可以考虑在后端关闭HTTPS重定向(注释掉app.UseHttpsRedirection()),让Nginx统一处理HTTPS;
  • 要是坚持后端自己处理HTTPS,要确保后端的HTTPS端口(比如5001)已经绑定正确,并且防火墙开放了该端口。

5. 确认远程PC的DNS解析

虽然你说远程能打开Angular页面,但还是要验证下远程PC的test.example.net是否解析到了正确的服务器IP:在远程PC上运行ping test.example.net,看返回的IP是不是服务器的公网/局域网IP,如果解析错误,需要修改远程PC的hosts文件或者调整DNS配置。

最后验证步骤

修改完成后,重启后端exe、重启Nginx,然后在远程PC上:

  1. 直接访问https://test.example.net/api/xxx(随便一个后端接口),确认能返回正确结果;
  2. 再打开Angular页面,检查控制台是否还有连接拒绝的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:27:32