Размещение нескольких сайтов ASP NET Core на unbuntu и nginx в качестве обратного прокси - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь разместить несколько сайтов ASP NET Core с разными доменами в Linux, Unbunt 18.04 и использую nginx в качестве обратного прокси.

Это следующие шаги:

1) Создание новых файлов .conf в / etc / nginx / sites-available

2) Создание папок в / var / www / изагрузка в приложение .net

3) Создание новых файлов .service для каждого файла .conf

Файл nginx .conf по умолчанию не изменяется.

Файлы .conf выглядят следующим образом:

server {
    listen        80;
    server_name   domain;
    location / {
        proxy_pass         http://localhost: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 $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

.service файлы выглядят так:

[Unit]
Description=Event Registration Example

[Service]
WorkingDirectory=/var/www/example
ExecStart=/usr/bin/dotnet /var/www/example/example.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

При такой конфигурации, даже если я развертываю несколько сайтов, все они перенаправляются на один и тот же контент. Моя цель - разместить на одном сервере несколько основных приложений .net. Как должна выглядеть конфигурация?

Ответы [ 2 ]

1 голос
/ 24 октября 2019

У меня была похожая проблема.

Каждый из ваших файлов конфигурации nginx приложений должен указывать на правильный номер порта, на котором настроено приложение .Net Core.

Это определяетсяв каждом из ваших приложений .Net Core program.cs в расширении .UseUrls(), например

public static IWebHost CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseUrls("http://0.0.0.0:2001")
                .UseStartup<Startup>()
                .Build();

Каждое приложение должно иметь свой номер порта и отражать его в своих конфигурационных файлах nginx, например,:

server {
    listen        80;
    server_name   domain;
    location / {
        proxy_pass         http://localhost:2001;
        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;
    }
}

Надеюсь, это поможет.

0 голосов
/ 16 октября 2019

Вам потребуется раздел сервера для каждого сайта. Поэтому, если вы хотите, чтобы domain1.com передавал прокси на localhost: 5000, а domain2.com передавал прокси на localhost: 5001, вы создаете 2 раздела сервера

server {
    listen        80;
    server_name   domain1.com;
    location / {
        proxy_pass         http://localhost: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 $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

server {
    listen        80;
    server_name   domain2.com;
    location / {
        proxy_pass         http://localhost:5001;
        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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...