1,安装Nginx
可参考:Linux Ubuntu 安装nginx-CSDN博客
2,安装.NetCore SDK 或.NetCore 运行时
可参考:Ubuntu 安装.Net Core SDK-CSDN博客
3,VS2022 发布项目,选择项目目标运行时为适合Linux 的
4,在服务器上的地址为/usr/local/nginx/html的文件夹下新建该项目的文件夹,比如testapi
5,将VS发布的文件使用FTP服务上传到该文件夹下
6,找到项目的启动主文件,我的是:LinuxTest2.dll,使用 dotnet LinuxTest2.dll 命令启动webapi
7,项目启动后的监听地址为:localhost:5000,我们需要使用nginx的反向代理来监听该5000端口
8,修改nginx的配置文件:sudo vim /usr/local/nginx/conf/nginx.conf,找到server 块,
在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;
解释:
listen 80;
表示Nginx监听80端口的HTTP请求。location /
块定义了对于所有请求的处理,这里的转发规则适用。proxy_pass http://localhost:5000;
表示将请求转发到本地的5000端口上。proxy_http_version 1.1;
和以下几行都是设置HTTP头部,以确保WebSockets之类的协议可以正常工作。
使用命令:sudo ./nginx -t 来检查配置文件是否有错
使用命令:sudo ./nginx -s reload 重新加载配置文件,或使用命令
此时,可使用ip:80 来访问指定的api
PS:
如果把ssh窗口关闭后,项目进程也会关闭,此时
可将dotnet LinuxTest2.dll 设置为后台进程:
可参考博客:ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识) - Savorboard - 博客园 (cnblogs.com)