ASP.NET CORE2.1: хост на Ubuntu18.04 /Apache2: прокси-сервер не работает

#apache #asp.net-core #ubuntu

#apache #asp.net-core #ubuntu

Вопрос:

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-2.1

Я последовал приведенному выше руководству и настроил свой компьютер Ubuntu 10.08 для запуска сервера Apache. Я также настроил компьютер для запуска Asp.NET Ядро 2.1 веб — api (MyApp.dll ) и он работает нормально (я могу получить к нему доступ на http://localhost:5000/api/Card ). Я настроил свой сервер Apache следующим образом для прокси:

sudo vi /etc/apache2/conf-enabled/myapp-netcore.conf:

 <VirtualHost *:80>  
   ServerName www.myubuntuvm.com  
   ProxyPreserveHost On  
   ProxyPass / http://127.0.0.1:5000/  
   ProxyPassReverse / http://127.0.0.1:5000/  
   
   ErrorLog /var/log/apache2/netcore-error.log  
   CustomLog /var/log/apache2/netcore-access.log common  
</VirtualHost>
  

Startup.cs веб-Api:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseMvc();
    }
  

Когда я пытаюсь получить доступ к IP-адресу компьютера (на порту 80) в браузере, я могу увидеть домашнюю страницу Apache (Apache установлен и работает нормально). Согласно приведенной выше конфигурации, если я попытаюсь перейти на
http://<machine_ip>/api /Card, я получаю сообщение об ошибке «Запрошенный URL-адрес не найден на этом сервере».
Правильна ли моя конфигурация? Как мне исправить эту ошибку?

Спасибо за любую помощь.

Редактировать: я также следил за сайтом https://www.c-sharpcorner.com/article/how-to-deploy-net-core-application-on-linux / для настройки моей машины.

Ответ №1:

Я заставил сайт работать, выполнив следующие действия:

  1. В моем Startup.cs я прокомментировал строку

    app.UseHttpsRedirection(); Редактировать: это никак не повлияло на решение моей проблемы. Так что оставьте это.

  2. В моем APache2 /etc/apache2.ports.conf я добавил строку

    Прослушивание 8080

  3. В моем файле /etc/apache2/conf с поддержкой / myapp-netcore.conf я изменил конфигурацию виртуальных хостов следующим образом (эта конфигурация гарантирует, что запросы, поступающие на порт 8080, перенаправляются на localhost:5000, где мой ASP.NET Основное приложение запущено):

      <VirtualHost *:8080>  
        ServerName www.myubuntuvm.com  
        ProxyPreserveHost On  
        ProxyPass / http://127.0.0.1:5000/  
        ProxyPassReverse / http://127.0.0.1:5000/  
    
        ErrorLog /var/log/apache2/netcore-error.log  
        CustomLog /var/log/apache2/netcore-access.log common  
     </VirtualHost>
      
  4. Откройте порты на сервере Ubuntu для портов 80, 5000, 8080

    sudo ufw разрешает 80 / tcp sudo ufw разрешает 8080 / tcp sudo ufw разрешает 5000 / tcp