ASP.NET Core 애플리케이션은 Ubuntu 18.04에서 503 서비스를 사용할 수 없음으로 응답합니다.

ASP.NET Core 애플리케이션은 Ubuntu 18.04에서 503 서비스를 사용할 수 없음으로 응답합니다.

Ubuntu 18.04에서 실행하려고 하는 거의 수정되지 않은 Visual Studio 템플릿 ASP.NET Core 응용 프로그램이 있습니다. 나는 이 가이드를 따랐습니다.https://docs.microsoft.com/en-gb/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-3.1.

잠시 동안의 실패 후에 ASP.NET 서비스를 실행할 수 있었습니다. 하지만 내 페이지를 방문하면 503 서비스를 사용할 수 없음 오류가 표시됩니다.

내 Apache 구성:

<IfModule mod_ssl.c>
<VirtualHost *:80>
        ServerName example.com
        Redirect / https://example.com
        Redirect /panel https://example.com/panel
        Redirect /privacy https://example.com/privacy
</VirtualHost>

<VirtualHost *:443>
        ServerName example.com
        DocumentRoot /var/www/
        ServerAdmin [email protected]

        RewriteEngine On
        ErrorLog "/var/log/apache2/rewrite"
        LogLevel alert rewrite:trace6

        # ASP.NET application
        # launchSettings.json is configured to listen on this port
        ProxyPass /panel https://localhost:33138/
        ProxyPassReverse /panel https://localhost:33138/

        ProxyPass /api/socket ws://localhost:44909/api/socket
        ProxyPassReverse /api/socket ws://localhost:44909/api/socket

        ProxyPass /pgadmin4 !
        ProxyPass /privacy !
        ProxyPass /contact !
        ProxyPass /panel !

        ProxyPass / http://localhost:44909/
        ProxyPassReverse / http://localhost:44909/

        SSLEngine on
        SSLOptions +StrictRequire
        SSLProtocol TLSv1
        ServerAlias example.com
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

systemctl status tpanel이것은 (내 ASP 데몬) 의 결과입니다 .

● tpanel.service - a .NET Core 3.1 server
   Loaded: loaded (/etc/systemd/system/tpanel.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-12-13 10:16:21 CET; 4h 1min ago
 Main PID: 2765 (dotnet)
    Tasks: 16 (limit: 4915)
   CGroup: /system.slice/tpanel.service
           └─2765 /usr/bin/dotnet /var/www/TPanel/publish/TPanel.dll

Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Now listening on: http://localhost:5000
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Now listening on: https://localhost:5001
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Application started. Press Ctrl+C to shut down.
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Hosting environment: Production
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Content root path: /var/www/TPanel/publish

launchSettings.json:

{
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:50015",
      "sslPort": 44313
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TPanel": {
      "commandName": "TPanel",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:33138"
    }
  }
}

그런데 아까 말했듯이 에 접속하면 example.com/panel503에러가 뜹니다. 내 웹사이트의 다른 부분은 잘 작동합니다.

기타 정보:

  • 5001 포트를 사용하는 관련 없는 다른 응용 프로그램이 실행 중입니다. 그래도 문제가 되지 않도록 다른 것으로 교체했습니다.
  • 33138내 애플리케이션의 포트를 또는 로 설정했는지 여부는 중요하지 않은 것 같습니다 5001. 아무것도 변경되지 않습니다.

답변1

launchSettings.jsonVS 코드입니다. 여기서는 아무 것도 수행하지 않습니다.

귀하의 애플리케이션은 포트 5000(HTTP) 및 5001(HTTPS)에서 실행되고 있습니다. 이는 로그에서 볼 수 있는 부인할 수 없는 사실입니다.

Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Now listening on: http://localhost:5000
Dec 13 10:16:22 vps-example dotnet[2765]: info: Microsoft.Hosting.Lifetime[0]
Dec 13 10:16:22 vps-example dotnet[2765]:       Now listening on: https://localhost:5001

Apache는 포트 33138에서 애플리케이션에 연결하도록 구성됩니다.

    ProxyPass /panel https://localhost:33138/
    ProxyPassReverse /panel https://localhost:33138/

애플리케이션은 해당 포트에서 수신 대기하지 않으므로 503 – ASP.NET Core가 아닌 Apache에서 전송됩니다.

애플리케이션의 수신 포트를 수정하세요. 예 appsettings.json를 들어 ASPNETCORE_URLS. 더 많은 정보를 이용할 수 있습니다여기.

그런데 의 후행 슬래시가 일치하지 않습니다 ProxyPass. 이로 인해 추가적인 문제가 발생할 수 있습니다.

관련 정보