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

Nginx搭配LetsEncrypt证书部署带HTTPS的.Net Core服务故障求助

核心问题定位

  1. Kestrel 配置冲突且HTTPS端点启动失败:你同时在appsettings.json和Program.cs中配置了监听地址,UseUrls的优先级高于配置文件,且HTTPS端点未配置对应证书,导致服务启动时60111端口根本没有正常监听,Nginx代理请求到不存在的端口后 fallback 到默认页。
  2. Nginx 反向代理目标配置错误:将HTTPS流量代理到了未启动的60111端口,而非可用的HTTP 60110端口。
  3. (潜在问题)你贴出的443配置中server_name MyDomain.tech末尾缺少分号,可能导致配置未实际生效,或存在Nginx默认站点配置优先级高于自定义vhost的情况。

修复步骤

1. 修正.NET端冗余配置(采用Nginx做SSL卸载的最佳实践,无需Kestrel单独处理HTTPS)

  • 调整appsettings.json,删除无用的HTTPS端点配置:
"Kestrel": {
    "Endpoints": {
        "Http": {
            "Url": "http://localhost:60110"
        }
    }
}
  • 简化Program.cs配置,删除会覆盖配置文件的UseUrls和冗余的UseKestrel调用:
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
  • 调整Startup.cs,确保UseForwardedHeaders放在所有中间件的最前面,用于识别Nginx传递的HTTPS头:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 必须放在最前面
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    
    if (env.IsProduction())
    {
        app.UseHsts();
    }
    app.UseHttpsRedirection();
    // 其余中间件...
}

修改完成后重新编译发布.NET服务,确认60110端口正常监听。

2. 修正Nginx配置

  • 删除sites-enabled目录下的默认站点软链接,避免优先级冲突:
sudo rm /etc/nginx/sites-enabled/default
  • 调整443端口vhost配置,修改代理目标为Kestrel的HTTP监听端口,补全缺失的分号:
server {
    listen 443 ssl;
    ssl_certificate      /path/to/fullchain.pem; #managed by Certbot
    ssl_certificate_key /path/to/privkey.pem;    #managed by Certbot
    root /var/www/websiteFolder;
    server_name MyDomain.tech;

    location / {
        proxy_pass         http://localhost:60110;
        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;
    }
}
  • 建议调整80端口vhost配置,强制所有HTTP请求跳转HTTPS:
server {
    listen 80;
    server_name MyDomain.tech;
    return 301 https://$host$request_uri;
}
  • 校验配置并重载生效:
sudo nginx -t
sudo nginx -s reload

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:01