Nginx 配置内网访问树莓派4 ASP.NET Core 3.0 网站
喜迎國慶
點擊上方藍字關注“汪宇杰博客”
導語
前幾天發了兩篇《
能跑就行:Kestrel Hosting
如果你的要求只是臨時內網訪問,可以只用 Kestrel 來承載 Web 服務器,只需要給 dotnet 命令一個 --urls 參數即可設置允許訪問的主機名和端口號。我不希望限制主機名,所以這里我用了 *。
dotnet Empower.dll --urls "http://*:8080"
現在,你的內網機器就能訪問樹莓派上的網站了:
但是這種方式有一定的缺點。比如你的代碼寫爆了,只要一個exception,dotnet 進程就會結束,你必須手工重啟才能繼續使用網站。而且 Kestrel 的功能遠沒有正常的Web服務器強大。因此,在更真實的環境里,我們還是要通過正常的Web服務器(如Nginx)做反向代理,并能自動重啟dotnet進程。
使用 Nginx + systemd
首先,安裝并啟動ngix
sudo apt-get install nginx?
sudo /etc/init.d/nginx start
打開配置文件
sudo nano /etc/nginx/sites-available/default
替換為以下內容
server {
? ? listen? ? ? ? 80 default_server;
? ? server_name? ?_;
? ? 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;
? ? }
}
其中?server_name 設置為 _; 的意思也是不限制主機名訪問。proxy_pass 對應的是 Kestrel 的默認終端地址。
應用設置
sudo nginx -t
sudo nginx -s reload
現在,啟動你的 ASP.NET Core 網站,應該能在內網用80端口訪問了。
dotnet Empower.dll
現在,我們還有最后一步,就是讓 dotnet 進程一爆就自動重啟,這可以借助 systemd 服務實現。
sudo nano /etc/systemd/system/kestrel-empowerapp.service
內容如下
[Unit]
Description=ASP.NET Core 3.0 App - Empower
[Service]
WorkingDirectory=/home/pi/dotnet-playground/empower/portable-fdd
ExecStart=/home/pi/dotnet-arm32/dotnet /home/pi/dotnet-playground/empower/portable-fdd/Empower.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-empower
User=pi
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
注意,systemd 要求我們使用絕對路徑。
注冊,并啟動服務:
sudo systemctl enable kestrel-empowerapp.service
sudo systemctl start kestrel-empowerapp.service
sudo systemctl status kestrel-empowerapp.service
現在,試試重啟你的樹莓派,網站會自動啟動,局域網80端口也能訪問,代碼爆了也能自動重啟服務!
關于更詳細的配置,可以點擊【閱讀原文】參考微軟官方文檔。
總結
以上是生活随笔為你收集整理的Nginx 配置内网访问树莓派4 ASP.NET Core 3.0 网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “自启动”树莓派上的 .NET Core
- 下一篇: 2019年9月中国编程语言排行榜,C#排