喜迎国庆

点击上方蓝字关注“汪宇杰博客”

导语

前几天发了两篇《

能跑就行: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 网站相关推荐

  1. Nginx实现 内网访问外网https页面资源的解决方案

    项目场景: 在开发过程中,有遇到在内网环境下 需要访问外网 https页面.遇到这个需求也是比较不好做.经过查询资料和调试最终完成功能. 问题描述 解决思路 : 通过 nginx 反向代理来实现 原因 ...

  2. 使用frp配置内网访问(穿透)教程(超详细,简单)

    1 Frp介绍 frp 是一个开源.简洁易用.高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议.frp 项目官网是 https://github.com/fate ...

  3. 使用cpolar配置内网访问(内网穿透)教程(超详细,简单)

    目录 一.什么是cpolar? 二.它能用在哪些场景? 三.一些很棒的功能 四.cpolar高级套餐 五.如何使用? 1.下载cpolar软件安装包 2.注册cpolar账号 3. 登录账号,并拿到隧 ...

  4. 阿里云oss 使用, 基于Nginx 配置云服务器+oss的内网访问 , 及使用Java SDK 完成上传,下载,删除,查询文件列表操作

    一.同阿里产品,云服务器和存储对象oss-配置内网访问 阿里存储对象oss 地址: https://oss.console.aliyun.com/overview 配置须知 通过Nginx 进行网络转 ...

  5. 使用frp配置内网穿透

    1.服务端配置 服务端即在公网环境下的服务器,需配置frps服务 1.1 下载frp 下载地址是https://github.com/fatedier/frp/releases,要注意下载的版本,由你 ...

  6. Amazing ASP.NET Core 2.0

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

  7. lnmp 配置nginx 实现内网/本地域名

    需求:微服务 客户端服务器 需要内网访问 api接口服务器 解释:传统的外部网址(比如二级域名)也能实现,但是不安全,于是采用内网域名的形式 实现步骤: 1.nginx解析域名 _innerapi.s ...

  8. Nginx代理内网服务器访问外网

    Nginx代理内网服务器访问外网 1.SpringBoot工程配置文件改写 2. SpringBoot静态工具类注入配置文件变量 3. SpringBoot 使用 4. 配置Nginx 问题描述: 有 ...

  9. 局域网使用树莓派配置内网穿透

    使用frp配置内网穿透 硬件设施:centos 主机 树莓派4b 下载对应的frp 下载地址 https://github.com/fatedier/frp/releases 我下载的分别是 对应的压 ...

最新文章

  1. 验证车牌号码是否有效
  2. .NET Core实战项目之CMS 第十七章 CMS网站系统的部署
  3. linux-basic(7)linux文件与目录管理
  4. Fedora 17 下 Samba 服务快速设置
  5. java学习(142):file类的基本创建
  6. 《深入理解Java虚拟机》——垃圾收集器的具体实现
  7. linux下最好的ftp服务器,用Linux系统构建高效FTP服务器
  8. java g1的并行_Java 11好用吗
  9. Spring学习总结(5)——IOC注入方式总结
  10. 2021年,彩票店还开的下去吗?
  11. 商厂里调货拿包包程序
  12. GARFIELD@10-21-2004
  13. RPM打包原理、示例、详解及备查( 转)
  14. Python 数据科学手册
  15. Moviebooking电影售票系统--用例建模
  16. [开源之美] nanomsg -- 进程间通讯
  17. sinx/cosx的泰勒展开式与库函数的比较
  18. [生存志] 第96节 南华著真经
  19.  一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部。定义一个结构体ComplexNumber,包含imaginary和real两个成员变量,能够表示
  20. matlab能否算高中数学题,Matlab软件在高中数学学习中的应用

热门文章

  1. iphone4 短信截获
  2. zoj2271 Chance to Encounter a Girl(DP)
  3. java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...
  4. 迷茫在路口——致我的2014
  5. mac屏幕截图_如何在Mac上拍摄屏幕截图
  6. 火狐 新增标签 一直加载_在Firefox的新标签页中加载最后标签页的URL
  7. CC框架实践(1):实现登录成功再进入目标界面功能
  8. javascriptjquery 判断滚动到页面底部
  9. 使用 HP 3PAR Peer Persistence 实现 vSphere Metro Storage Cluster (vMSC)
  10. MySQL - Found option without preceding group in config file