主站ASP.NET C#(Azure Windows)与/blog目录WordPress(Linux)同域名部署方案咨询
混合部署方案:主站Azure ASP.NET + 保留Linux上的/blog路径(无域名变更)
这是个非常典型的混合架构迁移场景,既要完成主站技术栈升级,又要保住原有博客积累的SEO价值,完全可以通过路由转发+反向代理实现,下面给你几个实操性强的方案,按推荐度排序:
方案1:Azure Front Door(推荐)—— 云端路由中枢
这是最省心的方案,利用Azure原生的全球路由服务来做路径分流,完全不用修改两边服务器的配置:
- 把你的域名解析到Azure Front Door的端点
- 在Front Door里配置两个路由规则:
- 匹配路径
/*,转发到你的Azure ASP.NET应用服务(设置为默认路由) - 匹配路径
/blog/*,转发到Linux服务器上的WordPress站点(需要确保Linux服务器有公网可访问的地址)
- 匹配路径
- 额外优势:Front Door自带CDN缓存、DDoS防护,还能自动处理HTTPS证书,对SEO友好度拉满,用户访问时URL完全不变
方案2:Azure IIS URL Rewrite反向代理
如果不想额外加服务,直接在你的Azure ASP.NET应用服务里配置反向代理:
- 先在Azure门户的应用服务「扩展」里安装URL Rewrite模块
- 在应用根目录的
web.config里添加重写规则,把/blog开头的请求转发到Linux服务器:
<system.webServer> <rewrite> <rules> <rule name="Proxy Blog Requests" stopProcessing="true"> <match url="^blog/(.*)" /> <action type="Rewrite" url="https://你的Linux服务器公网地址/blog/{R:1}" /> <serverVariables> <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" /> <set name="HTTP_ACCEPT_ENCODING" value="" /> </serverVariables> </rule> </rules> <outboundRules> <rule name="Restore Accept Encoding"> <match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^$" /> <action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" /> </rule> </outboundRules> </rewrite> </system.webServer>
- 记得在Linux服务器的防火墙/Nginx/Apache里,把Azure应用服务的出站IP加入白名单,避免被拦截
- 注意:要确保WordPress的站点URL设置还是
yourdomain.com/blog,不要改成Linux服务器的原始域名
方案3:Linux服务器反向代理(适合原有域名解析在Linux的场景)
如果你的域名原本就指向Linux服务器,不想改解析,可以反过来让Linux服务器承担路由角色:
以Nginx为例,修改nginx.conf的server块:
server { listen 443 ssl; server_name yourdomain.com; # 这里配置你的SSL证书 # 保留/blog路径到本地WordPress location /blog { root /var/www/wordpress; index index.php; try_files $uri $uri/ /blog/index.php?$args; # 下面是原有WordPress的PHP-FPM配置,保留即可 fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 所有其他路径转发到Azure ASP.NET站点 location / { proxy_pass https://你的Azure应用服务域名; 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 $scheme; } }
- 这个方案的缺点是主站请求要先经过Linux服务器再到Azure,会增加一点延迟,但胜在不用动域名解析
SEO保护关键注意事项
- 绝对不要设置301/302跳转,必须保持
yourdomain.com/blog/xxx的URL完全不变 - 检查WordPress的
设置→常规里,「站点地址(URL)」和「WordPress地址(URL)」都要设为https://yourdomain.com/blog - 用Google Search Console重新验证站点,监控抓取状态,确保没有404或5xx错误
- 确保所有/blog页面的Canonical标签依然指向原URL,不要出现子域名或其他地址
内容的提问来源于stack exchange,提问作者Guo Hong Lim
相关产品推荐
相关产品推荐

