如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书
要想在 Linux 上部署 ASP.NET CORE 網站,除了使用“宇內流云”大神的 Jexus 之外就是使用 Nginx 對 ASP.NET CORE 網站進行反向代理。
常規的做法是在服務器上部署完成 ASP.NET 運行環境、網站程序之后,使用 Supervisor 對網站程序進程進行守護。網站程序采用固定的端口號,之后在寶塔面板中創建網站并配置反向代理。
寶塔面板是一個不錯的產品,為網站提供了一鍵申請免費 HTTPS 證書的功能。該功能會在網站根目錄下生成一個名為 .well-known?的目錄,證書的申請、續簽均需要依賴該目錄。
在配置完成反向代理之后,對?.well-known?目錄的訪問將會由 ASP.NET CORE 程序進行處理,這就會導致該目錄下的文件訪問不到了,于是自動申請 HTTPS 證書的功能也就失效了。
有兩種方式可以解決該問題:
修改 Nginx 網站的配置,讓對 .well-known 的請求不走反向代理。
修改 ASP.NET CORE 網站的設置,讓其支持對 .well-known 目錄下文件的訪問。
經過幾番折騰,修改 Nginx 網站配置的方式并沒有走通,這完全是因為筆者在 Linux 上的造詣淺薄。不過,第二種方案的實現倒是非常容易。
筆者將 ASP.NET CORE 應用發布到了網站的根目錄,這也就意味著 .well-known 目錄和 wwwroot 目錄是平級的。那么,我們僅需要增加一個靜態文件中間件即可:
app.UseStaticFiles(new StaticFileOptions {FileProvider = new PhysicalFileProvider($"{env.ContentRootPath}/.well-known"),RequestPath = "/.well-known",ServeUnknownFileTypes = true });以上代碼需要在 Configure 方法中調用。其中 ServeUnknownFileTypes = true?代表:即使文件的 MIME 類型未知,也將其發送到客戶端。該參數也可以用來解決部分靜態文件因后綴過于小眾而無法下載的問題。但要注意的是,這個設置會允許用戶下載 FileProvider 提供的所有文件包括但不限于 dll 、exe、 db 等。開啟此設置前需要小心謹慎。
總結
以上是生活随笔為你收集整理的如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis常用概念简介
- 下一篇: asp.net ajax控件工具集 Au