ASP.NET CORE2.1:在Ubuntu18.04 / Apache2上托管:代理不起作用

问题描述

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

我按照上面的教程进行了操作,并配置了我的Ubuntu 10.08计算机以运行Apache服务器。我还将计算机配置为运行Asp.NET Core 2.1 Web 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>

Web Api的Startup.cs:

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

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

当我尝试在浏览器中访问机器的IP(在端口80上)时,我能够看到Apache主页(Apache已安装并且运行正常)。按照上面的配置,如果我尝试去 http:// / api / Card,出现错误“在此服务器上找不到请求的URL”。 我的配置正确吗?如何解决错误

感谢您的帮助。

编辑:我还跟随站点https://www.c-sharpcorner.com/article/how-to-deploy-net-core-application-on-linux/来配置机器。

解决方法

我按照以下步骤操作了网站:

  1. 在Startup.cs中,我注释掉了这一行

    app.UseHttpsRedirection(); 编辑:这对我解决我的问题没有任何影响。所以,保留它。

  2. 在我的APache2 /etc/apache2.ports.conf中,添加了这一行

    听8080

  3. 在我的/etc/apache2/conf-enabled/myapp-netcore.conf文件中,我如下修改了VirtualHosts配置(此配置可确保将端口8080上的请求重定向到localhost:5000,其中我的ASP.NET Core应用正在运行):

     <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