Развертывание API .NetCore3.1 в LinuxCentos (Nginx) - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь развернуть. NET Core 3.1 API + Angular до Linux Centos работает на сервере, но браузер не может открыть его должным образом. Если я опубликую sh тот же проект для windows и запускаю его с помощью cmd, он запускается без проблем. При развертывании я получаю следующие случаи в соответствии с тем, что я ввел в конфигурацию nginx:

localhost:5020/weatherforcast - > I get the API's built in json returning functionality.
localhost:5020/Index.html - > I get index html but only <title> loads and *.js and *.css is not found /so blank white screen with bar title/.
localhost:5020 - > I get 404

У меня тоже нет никакой маршрутизации. Вот как выглядит мой метод запуска Configure: publi c void Configure (приложение IApplicationBuilder, enw IWebHostEnvironment) {if (env.EnvironmentName == Microsoft.Extensions.Hosting.Environments.Development) {app.UseDeveloperExceptionPage (); }

        app.Use(async (context, next) =>
        {
            await next();
            if (context.Response.StatusCode == 404 &&   !Path.HasExtension(context.Request.Path.Value))
            {
                context.Response.StatusCode = 200;
                context.Request.Path = "/index.html";
                await next();
            }
        });

     //   if (env.EnvironmentName == Microsoft.Extensions.Hosting.Environments.Development) app.UseHttpsRedirection();

        app.UseRouting();

        if (env.EnvironmentName == Microsoft.Extensions.Hosting.Environments.Development)
        {
            app.UseCors(builder => builder
                       .WithOrigins("http://localhost:4200")
                       .AllowAnyMethod()
                       .AllowAnyHeader()
                       .AllowCredentials()
                       );
        }
        else
        {
            app.UseStaticFiles();
            app.UseDefaultFiles();
        }


        app.UseAuthentication();
        app.UseAuthorization();

        app.UseHsts();
        app.UseResponseCompression();

        app.UseMiddleware<Middlewares.SeederMiddleware>();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapHub<RecievedMessagesHub>("/unread-messages");
            endpoints.MapHub<RecipeDetailsTrackHub>("/recipe-details");
        });
    }

и это моя Nginx настройка:

server {
listen        80;
server_name  app123.tk www.app123.tk;
location / {
    proxy_pass         https://localhost:5020;
    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;
    }
}

И вот что в журналах Nginx говорится:

[error] 5349#0: *92 connect() failed (111: Connection refused) while   connecting to upstream,    client: X.X.X.X, server: app123.tk, request: "GET  / HTTP/1.1", upstream: "https://127.0.0.1:5020/",  host: "www.app123.tk".

У меня нет такие проблемы, если я запускаю не angular приложение MVC на том же порту с той же настройкой Nginx.

1 Ответ

0 голосов
/ 01 апреля 2020

Это исправило мою проблему: ниже

proxy_set_header  X-Forwarded-Proto $scheme;

Я добавил

proxy_max_temp_file_size 0;
proxy_buffering off;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...