Skip to content

DNET_NginxHostASPNETCore

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

nginxでASP.NET Coreをホストする

概要

nginx ---> Kestrel ---> ASP.NET Coreアプリ

全容

ASP.NET CoreのWebサーバ - マイクロソフト系技術情報 Wiki

手順(概要)

  • dotnet publishでFDDのアプリケーション・パッケージ生成する。
    ASP.NET Coreのインストールとデプロイを参照)
  • 既存のASP.NET Coreアプリケーションをnginxリバースプロキシの背後に配置。
  • 要求をKestrel Webサーバに転送するようにnginxリバースプロキシを設定。
  • Webアプリケーションを起動時にデーモンとして実行する。
  • Webアプリケーションの再起動を支援するプロセス管理ツールを設定。

CentOS

・・・

Ubuntu

前提

手順(Ubuntu)

nginxリバースプロキシの構成

  • 既存のASP.NET Coreアプリケーションをnginxリバースプロキシの背後に配置。

  • 要求をKestrel Webサーバに転送するようにnginxリバースプロキシを設定。

    • 設定の変更
      /etc/nginx/conf.d/default.conf

      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 $http_host;
              proxy_cache_bypass $http_upgrade;
          }
      }

      ※ 設定先には上記以外に下記があるもよう。詳しくはnginxの設定を参照。

      • /etc/nginx/nginx.conf
      • /etc/nginx/sites-available/default
    • 設定のチェック

      sudo nginx -t
      
    • 設定の反映

      sudo nginx -s reload
      

Kestrelをデーモン実行

Webアプリケーションを起動時にデーモンとして実行する。

  • systemdのサービス定義ファイルを作成

    • テキスト・エディタで開く

      sudo vi /etc/systemd/system/kestrel-hellomvc.service
      
    • 以下のように設定する。

      [Unit]
      Description=Example .NET Web API App running on Ubuntu
      [Service]
      WorkingDirectory=/var/aspnetcore/hellomvc ※ 実際の値に変更。
      ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll ※ 実際の値に変更。
      Restart=always
      RestartSec=10 # Restart service after 10 seconds if dotnet service crashes
      SyslogIdentifier=dotnet-example
      User=www-data
      Environment=ASPNETCORE_ENVIRONMENT=Production
      Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
      [Install]
      WantedBy=multi-user.target
  • ファイルを保存し、サービスを有効にする。

    sudo systemctl enable kestrel-hellomvc.service
    
  • サービスを開始し、実行されていることを確認する。

    sudo systemctl start kestrel-hellomvc.service
    sudo systemctl status kestrel-hellomvc.service
    
  • systemdではなく、supervisordを使用してプロセスを監視するには、

監視(ログ)

systemdによって、プロセスのイベントは、一元的な履歴に記録される。

  • ログを表示する。

    sudo journalctl -fu kestrel-hellomvc.service
    
  • 時間オプションでさらに絞り込む

    sudo journalctl -fu kestrel-hellomvc.service --since "2016-10-18" --until "2016-10-18 04:00"
    

プロセス管理

Webアプリケーションの再起動を支援するプロセス管理ツールを設定。

・・・。

参考

内部リンク

Microsoft Docs

マイクロソフト系技術情報 Wiki

移行メモ

  • 「実⾏されている」に混入していた異体字(U+2F9F「⾏」)を通常の「行」に直した。
  • 「時間オプションさらに絞り込む」→「時間オプションでさらに絞り込む」に修正した。
  • 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (参考の「nginx」「ASP.NET Coreのインストールとデプロイ」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文(箇条書き)に置いた。
  • 同名の見出し(「手順」)が複数あり GitHub Wiki でアンカが衝突するため、 括弧で文脈を補って一意にした。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの ASP.NET CoreのWebサーバ に張り替えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。

Tags: 移行, nginx, ASP.NET Core, Kestrel, リバースプロキシ, systemd, Ubuntu, journalctl

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally