【问题标题】:multiple net core apps same domain on nginxnginx上的多个网络核心应用程序同一个域
【发布时间】:2021-12-25 01:31:12
【问题描述】:

我想使用与虚拟位置相同的 url 从网络浏览器访问我的应用程序。 例如:

  • samedomain.com/app1
  • samedomain.com/app2

我使用 ubuntu server 20.04Nginx 来部署我的 .Net Core 应用,app1 的文档根目录是 /var/www/app1/wwwroot,app2的文档根目录是/var/www/app2/wwwroot。我的问题是为每个应用程序提供 css、图像和 js 档案......这是我的 nginx 配置:

upstream app1 {
  server 192.168.1.1:5003;
}
upstream app2 {
  server 192.168.1.1:5004;
}
server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name apps.domain.com;
  root /var/www/apps;
  location / {
  try_files $uri $uri/ /index.html;
  proxy_read_timeout 300s;
  proxy_connect_timeout 75s;
}
location /app1/ {
    proxy_pass http://app1/;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    }
location /app2/ {
    proxy_pass http://app2/;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    }
#Static Archhives
#location ~* \.(js|css|svg|jpg|png)$ {
#        root  /var/www/app1/wwwroot;
#        expires 24h;
#    }
}

我的 nginx 配置的最后一部分,只有 app1 可以加载静态文件,不能从 font awesome 加载图标,app2 不能 加载任何东西...

#Static Archhives
#location ~* \.(js|css|svg|jpg|png)$ {
#        root  /var/www/app1/wwwroot;
#        expires 24h;
#    }
}

有人知道我如何为每个应用提供 css、js、jpg 文件吗?

提前致谢

【问题讨论】:

    标签: ubuntu nginx .net-core


    【解决方案1】:

    嗯,我的解决方案比我想象的要容易

    这是我的 Nginx 配置:

    #APPS DOMAIN
    upstream app1 {
        server 192.168.1.1:5003;
    }
    upstream app2 {
        server 192.168.1.1:5004;
    }
    
    
    server {
        listen 80;
        listen [::]:80;
        server_name apps.domain.com;
    
    location / {
            index index.html;
            root /var/www/apps;
    
            }
    
    #APP1
    location /app1 {
            proxy_pass http://app1;
            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-Real-IP   $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            }
    
    #APP2
    location /app2 {
            proxy_pass http://app2;
            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-Real-IP   $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            }
    
    }
    

    app1 .Net Core 项目中,我在 Startup ClassConfigure method 中添加了这些行:

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                //This Lines
                app.UsePathBase("/app1"); // DON'T FORGET THE LEADING SLASH!
                app.UseStaticFiles(); //DEFAULT STATIC FILES IN wwwroot
                //...
            }
    

    app1 项目中,我在 Program Class 中添加了这些行,在 main 方法之外:

    public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();          
    
            }
    
            //This lines        
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseContentRoot(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location))
                    .UseStartup<Startup>();
           //...
    

    我在 app2 .Net Core 项目中也是如此...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多