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

如何配置NGINX反向代理ASP.NET Core应用实现类似IIS的子路径访问

调整后可实现需求的完整Nginx配置

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # 匹配所有主机头,支持localhost、本地IP、域名等所有访问方式
    server_name   _;
    index     index;

    # 匹配子路径前缀,^~ 标识优先匹配该规则,不走其他正则匹配
    location ^~ /name.of.app/ {
        # 末尾加斜杠,Nginx会自动把/name.of.app/前缀去掉后转发给后端
        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;
    }
}

修改逻辑说明

  • 把server_name从appname.*改为_,匹配所有请求的主机头,不管是通过localhost还是192.168.x.x访问都能命中该 server 块,解决无法对外暴露的问题。如果需要限制仅特定域名/IP访问,把_替换为对应的IP或域名即可。
  • 把原来的根路径匹配location /改为location ^~ /name.of.app/,只有请求路径前缀为/name.of.app/的流量才会转发到你的ASP.NET Core应用,和IIS的子路径访问逻辑一致。
  • proxy_pass末尾新增斜杠/,Nginx转发时会自动去除/name.of.app/前缀,比如访问http://192.168.x.x/name.of.app/home,转发到5000端口的路径就是/home,符合后端应用的路径预期。

后端ASP.NET Core应用适配

你需要在应用启动配置中添加路径基址配置,避免应用内部生成的链接错误:
在Startup.cs的Configure方法最开头添加以下代码即可:

app.UsePathBase("/name.of.app");

配置完成后重新发布启动应用。

所有配置修改完成后执行nginx -s reload重载Nginx配置即可生效,之后就可以通过http://localhost/name.of.app/和http://192.168.x.x/name.of.app/访问应用,和IIS的访问效果完全一致。

内容的提问来源于stack exchange,提问作者Joao Dot Neto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:03