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

如何在同一服务器同域名下托管ASP.NET Core电商与WordPress博客子域名

好的,我来一步步帮你搞定在同一服务器上用子域名托管ASP.NET Core电商和WordPress博客的需求。这个场景其实非常常见,核心就是DNS解析、服务器反向代理/站点配置、两个应用自身的适配这几个环节,我给你拆成具体可操作的步骤:

第一步:配置DNS解析

首先得让你的两个子域名指向服务器的公网IP,去你的域名服务商后台做以下设置:

  • 添加一条A记录:主机填shop,记录值填服务器的公网IP地址
  • 添加另一条A记录:主机填blog,记录值填同一个服务器公网IP地址

如果你用的是云服务商的负载均衡或者CDN,也可以用CNAME记录指向对应的域名,但A记录是最直接的方式。配置后可能需要10-30分钟生效,可以用nslookup shop.domainname.com命令验证解析是否成功。

第二步:服务器配置(分两种主流环境)

这里分Linux(Nginx)和Windows(IIS)两种情况,你根据自己的服务器系统选对应的方案:

方案A:Linux服务器用Nginx做反向代理

先确保服务器上已经装好这些依赖:Nginx、ASP.NET Core运行时、PHP 7.4+(WordPress需要)、MySQL/MariaDB。

1. 配置电商站点(shop.domainname.com)

在Nginx的配置目录(通常是/etc/nginx/sites-available/)新建文件shop.conf,内容如下:

server {
    listen 80;
    server_name shop.domainname.com;

    location / {
        proxy_pass http://localhost:5000; # 假设你的ASP.NET Core应用监听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 $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

提示:如果你的ASP.NET Core用的是其他端口,把5000改成对应端口就行;生产环境一定要加HTTPS,后续可以用Let's Encrypt申请免费证书,再添443端口的配置。

2. 配置博客站点(blog.domainname.com)

同样在/etc/nginx/sites-available/新建blog.conf,内容如下:

server {
    listen 80;
    server_name blog.domainname.com;

    root /var/www/wordpress; # 替换成你的WordPress安装目录
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args; # 支持WordPress的固定链接
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整路径
    }

    location ~ /\.ht {
        deny all; # 禁止访问敏感的.htaccess文件
    }
}

3. 启用配置并重启Nginx

创建软链接到启用目录,然后重启服务:

sudo ln -s /etc/nginx/sites-available/shop.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/
sudo nginx -t # 检查配置是否有语法错误
sudo systemctl restart nginx

方案B:Windows服务器用IIS托管

如果是Windows服务器,用IIS会更顺手,先确保安装好这些组件:IIS、ASP.NET Core托管模块、PHP管理器、MySQL。

1. 创建电商站点

  • 打开IIS管理器,右键“网站”→“添加网站”
  • 网站名称填ShopSite,物理路径选你ASP.NET Core应用的发布文件夹
  • 绑定:类型选HTTP,IP地址选服务器公网IP,端口80,主机名填shop.domainname.com
  • 应用程序池:选择“无托管代码”(因为ASP.NET Core自己负责托管)

2. 创建博客站点

  • 同样右键“网站”→“添加网站”
  • 网站名称填BlogSite,物理路径选WordPress的安装目录
  • 绑定:类型选HTTP,IP地址选服务器公网IP,端口80,主机名填blog.domainname.com
  • 应用程序池:选择“无托管代码”(PHP不需要.NET CLR),然后通过PHP管理器配置PHP处理器路径

3. 配置URL重写(针对WordPress)

WordPress的固定链接需要URL重写支持,在IIS里安装“URL重写”模块后,导入WordPress的重写规则(或者手动添加),确保伪静态正常工作。

第三步:配置ASP.NET Core电商应用
  1. 确保应用允许子域名访问:在Program.cs里配置Kestrel的允许主机,或者通过配置文件设置:
var builder = WebApplication.CreateBuilder(args);
// 其他服务配置...
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenLocalhost(5000); // 监听本地端口,通过Nginx/IIS转发
});
var app = builder.Build();
// 中间件配置...
app.Run();

生产环境不要用*允许所有主机,最好明确指定shop.domainname.com,或者依赖反向代理转发的Host头。

  1. 如果启用了HTTPS,建议让Nginx/IIS处理SSL证书,ASP.NET Core内部用HTTP通信即可,避免重复配置证书。
第四步:配置WordPress博客
  1. 安装阶段:在WordPress的安装向导里,把“站点地址”和“WordPress地址”都设置为http://blog.domainname.com(如果用HTTPS就改成https)。
  2. 已安装的情况:修改wp-config.php文件,添加以下代码强制子域名访问:
define('WP_HOME', 'http://blog.domainname.com');
define('WP_SITEURL', 'http://blog.domainname.com');
  1. 固定链接设置:登录WordPress后台,进入“设置→固定链接”,选择除“朴素”外的任意格式(比如“文章名”),确保Nginx/IIS的重写规则已经配置好。
第五步:测试与排错
  • 先验证DNS解析是否生效,用浏览器访问两个子域名,看是否能正常加载对应站点。
  • 如果ASP.NET Core站点打不开:检查Kestrel是否在运行,Nginx/IIS的反向代理配置是否正确,服务器防火墙是否开放了80/443端口。
  • 如果WordPress站点打不开:检查PHP是否正常运行,MySQL连接信息是否正确,Linux下要确保Nginx用户有WordPress目录的读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:15:51