ASP.NET Core 6.0におけるホスティングモデルのカスタマイズ

WebHostBuilderの設定

以下のコードは、新しいASP.NET Core Webプロジェクトでデフォルトで生成されるものです。

var webApp = WebApplication.CreateBuilder(args);
var appInstance = webApp.Build();
appInstance.MapGet("/", () => "こんにちは、世界!");
appInstance.Run();

このコードは基本的なセットアップを提供しますが、より高度な設定が必要な場合は、KestrelやHTTP.sysなどのオプションをカスタマイズできます。

Kestrelの設定

以下はKestrelサーバーの設定例です。ここでは、特定のIPアドレスとポートにリッスンするように指定しています。

webApp.WebHost.UseKestrel((context, options) => {
    var certFile = context.Configuration.GetValue<string>("Settings:CertFileName");
    var certPass = context.Configuration.GetValue<string>("Settings:CertPassword");

    options.Listen(System.Net.IPAddress.Loopback, 5000);
    options.Listen(System.Net.IPAddress.Loopback, 5001, listenOptions => {
        listenOptions.UseHttps(certFile, certPass);
    });
});

HTTP.sysの設定

HTTP.sysはWindows環境での別の選択肢であり、次のようにして設定できます:

webApp.WebHost.UseHttpSys(options => {
    options.AllowSynchronousIO = true;
    options.MaxConnections = 100;
    options.MaxRequestBodySize = 30000000;
});

IISでのホスティング

IISを使用してアプリケーションを公開するには、まずアプリケーションをビルドし、publishコマンドを使用して出力ディレクトリを作成します。

dotnet publish -o ../published -r win-x64

その後、生成されたファイルをIISに配置し、必要な設定をweb.configで行います。

Linux上のNginxまたはApacheの使用

Linux上でアプリケーションを公開する際、NginxやApacheを反向プロキシとして使用することが一般的です。以下のコードはNginxの設定例です。

server {
    listen 80;
    server_name example.com *.example.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;
    }
}

同様に、Apacheの設定もほぼ同じ機能を持たせることができます。

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog ${APACHE_LOG_DIR}/yourapplication-error.log
    CustomLog ${APACHE_LOG_DIR}/yourapplication-access.log common
</VirtualHost>

タグ: ASP.NET Core Kestrel HTTP.sys IIS nginx

6月11日 22:01 投稿