多数情况下,单个域名挂载多个项目,这是正常的项目部署方案,
但随着业务的复杂度增大,会把项目进行拆分,通过路由进行业务区分,
此时就需要多个项目共享一个域名。
此篇文章则介绍 多个blazor server项目如何配置
假设你的前缀为 app1,此处只配置一个程序,其他程序同理
Nginx 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| server { listen 80; server_name youdomain.com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade;
location /app1/ { proxy_pass http://127.0.0.1:6011; rewrite ^/app1/(.*)$ /$1 break; }
location /app2/ { proxy_pass http://127.0.0.1:6012; rewrite ^/app2/(.*)$ /$1 break; } }
|
blazor server 项目配置
_Host.cshtml文件修改
1 2 3 4 5 6 7 8 9 10
| @if (_env.IsProduction()) { <base href="~/app1/" /> <link rel="icon" href="favicon.ico" /> } else { <base href="~/" /> <link rel="icon" href="/favicon.ico" /> }
|
由于本地环境不需要加前缀,故作此判断,其他路径不需要改变
Program.cs 文件修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapBlazorHub();
if (app.Environment.IsProduction()) { endpoints.MapFallbackToPage("/app1/{*path:nonfile}", "/_Host"); } else { app.MapFallbackToPage("/_Host"); } });
|
正常情况下,到此就配置完成了,但我的项目里用到了控制器,故需将所有请求的路由加上前缀,控制器路由无需添加