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>