🕌

ASP.NET Coreで認証付きシングルページアプリケーション(React)をデプロイ時の注意点

2021/10/26に公開

はじめに

https://zenn.dev/yu2728/articles/b05e075ad4e387
の続き本番環境に置くときかなりハマってのでメモしておきます
以下の設定についてメモしてます

  • パラメーター設定
  • SSL設定

何かあっても自己責任で
https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-5.0

環境:
Ubuntu, Nginx, Let's Encrypt

本番環境用の設定を行う

Startup.csの設定を追加

Startup.cs
//using Microsoft.AspNetCore.HttpOverrides;

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

appsetting.Production.jsonを作成する
Releaseを指定してpublishするとappsetting.Production.jsonが使用される
.gitignoreに追加してgitで管理させない
user-secretsは本番環境では非推奨。
HTTPS化する場合は、IdentityServerが必要。設定方法はのちほど

appsetting.Production.json
{
    "SendGridUser": "<sendgrid_user>",
    "DbPassword": "<sqlserver_password>",
    "SendGridKey": "<send_grid_key>",
}

SSL設定用の.pfxを準備する

pfxファイルが必要になるので変換する。
Let's Encryptはpem方式なので変換する必要がある
パスワード入力を求められるので入力する

// root
sudo -s
cd /etc/letsencrypt/live/<your_domain>

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out <your_domain>.pfx

キーを設定する

appsetting.Production.json
    "IdentityServer": {
        "Key": {
            "Type": "File",
            "FilePath": "<file_path>",
            "Password": "<password>"
          }
    }

アプリを発行する

dotnet publish --configuration Release

アプリを発行して配置する

Discussion