我的web后台之DOTNET与Nginx
这篇文章对DOTNET和Nginx进行简单的介绍,以试图说明我部署的web应用是如何通过域名访问到的。
DOTNET和Nginx
早期我只是建立了一个简单的博客网站,完全静态的,没有提供任何交互式的服务,所以那时候我只是用Nginx提供的最简单的静态网站访问的能力。后来我发布了交互式的web应用,这时候才开始引入了.NET平台提供的web服务。
注意,评论系统并不是我提供的服务。我只是使用了LeanCloud提供的评论服务。Valine 诞生于2017年8月7日,是一款基于 LeanCloud 的快速、简洁且高效的无后端评论系统。
DOTNET
官方介绍:https://learn.microsoft.com/en-us/dotnet/core/introduction
DOTNET
其实就是.NET
。
2002年,微软发布了.NET Framework,一个用于创建Windows应用程序的开发平台。
2014年,微软推出了.NET Core
,作为 .NET Framework
的跨平台、开源的继任者。这种新的.NET实现方式在3.1版本中一直保持着.NET Core
的名称。在.NET Core 3.1
之后的下一个版本被命名为.NET 5
。
新的.NET版本继续每年发布,每一个主要的版本号都会提高。它们包括重要的新功能,并经常启用新的应用场景。
我们可以理解.NET 平台
是一个长期发展的软件生态,它提供构建软件能力的整个解决方案,主要包含三大件:语言(C#),IDE(Visual Studio),基础类库(.NET Framework
,……)。
其基础类库包含不同的发展分支,它最初的形态是.NET Framework
,其版本信息可以查看官网说明。由于.NET Framework
和windows操作系统有深度的绑定关系,导致其难以实现跨平台。Xamarin主导的Mono
项目试图解决跨平台的问题,但在.NET 的基础类库实现上仍不够完美。2014年,Xamarin和微软发起.NET基金会,在2014年11月份微软开放了.NET Framework
源代码。在.NET开源基金会的统一规划下诞生了.NET Core
。
.NET Framework
是最初的.NET
,Mono
是.NET Framework
的跨平台实现,.NET Core
是.NET
开源的跨平台的实现。现在已经不说.NET Core
了,微软直接命名为.NET 版本号
。
2021年11月8号,微软正式发布了.NET 6
2022年11月8号,微软正式发布了.NET 7
ASP.NET Core
ASP.NET Core
是一个免费且开放源代码的Web框架,以及由微软和社区开发的下一代ASP.NET
。它是一个模块化框架,可以运行在跨平台的.NET Core
上。
使用Visual Studio
开发基于ASP.NET Core
框架的web程序,将web程序发布到Linux服务器上。当然,要保证程序在服务器上可以正常运行,需要在服务器上安装dotnet-sdk。
通过下面命令可以直接查看web程序是否可以正常运行。
1 | dotnet /目录/项目.dll |
如果可以正常运行,一般进一步就是要创建服务文件,并且通过它来启动web服务,默认的dotnet webapp启动的端口是5000和5001。更多内容可以查看我之前的一篇文章《将ASP.NET Core发布到Nginx》。
Nginx
Nginx是一款开源软件,是一个高性能的HTTP和反向代理web服务器 [13] ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
Nginx是一个web服务器,但是更多的是提供静态内容服务,另外,它作为一个代理服务器,可以将请求转发给其他的应用服务。
通过上面一个章节,我们知道,可以在Linux系统上发布一个web应用服务。为了保证用户可以通过浏览器访问到该服务,可以用Nginx将请求转发到服务端口。所以通常会在nginx配置中有类似这么一段,将请求转发到5000端口,而这个端口就是我们启动的web应用服务。
1 | server { |
总结
综上所述,我在linux上安装并启动了一个web程序,它工作在5000端口上,又安装了Nginx的服务,网站工作时,通过浏览器向Nginx发出请求,Nginx将请求转发给了web程序,最终实现了对web程序的访问。
我的web后台之DOTNET与Nginx
https://hangliebe.com/blog/2022/11/13/2022-11-13-my_web_server_dotnet_and_nginx/