VisualStudioCode创建的asp.net core项目部署到linux,使用nginx代理

1、准备工作:

  a:使用VisualStudioCode创建asp.net core项目,并使用命令“dotnet publish”发布(可以参考前面两篇文章)。

    如:dotnet publish -c release -o D:\coretest 发布到D:\coretest文件夹中,-c 发布时要使用的配置,默认值是debug。

  b:把发布的 asp.net core项目上传到linux服务器上(我的linux的代码路径为“/var/wwwroot/netcoretest”)。

  c:linux服务器上安装.net core sdk。

2、asp.net core代码注意地方:

  由于请求是通过nginx反向代理转接的,因此使用 Microsoft.AspNetCore.HttpOverrides 包中的转接头中间件。

  此中间件使用 X-Forwarded-Proto 标头来更新 Request.Scheme,使重定向 URI 和其他安全策略能够正常工作。

  所以在项目的Startup.cs中做如下修改:

  VisualStudioCode创建的asp.net core项目部署到linux,使用nginx代理

  

3、配置nginx:

server {
listen 8003;
server_name example.com *.example.com;
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:$server_port; #加上端口,这样配置,可以防止重定向时端口丢失问题
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

4、在linux服务器上运行项目:

切换到项目代码目录下(我的linux的代码路径为“/var/wwwroot/netcoretest”),使用命令“dotnet admin.dll”(admin为我的项目名)运行项目,如下图:

VisualStudioCode创建的asp.net core项目部署到linux,使用nginx代理

上面的warn可以忽略。

.net core项目默认监听端口为5000,代码中可以在launchSettings.json中修改。

这时,在浏览器中输入地址http://XXXXX:8003 就可以了,如下图(下面是创建.net core mvc 默认站点界面):

VisualStudioCode创建的asp.net core项目部署到linux,使用nginx代理

5、也可以建一个自定义服务,用于维护.net core项目进程,使项目的开机自动启动:

a、新建自定义服务:vim /etc/systemd/system/mydotnetcore.service

b、服务代码内容如下:

[Unit]
Description=dotnet core demo running on linux [Service]
WorkingDirectory=/var/wwwroot/netcoretest
ExecStart=/usr/bin/dotnet /var/wwwroot/netcoretest/admin.dll
Restart=always
RestartSec=
SyslogIdentifier=dotnet core demo
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production [Install]
WantedBy=multi-user.target

c、启动服务

systemctl start mydotnetcore.service

即可。

上一篇:FreeCodeCamp 的 Basic Algorithm Scripting 题解(1)


下一篇:【python】re库 正则的一些过滤和把str拆分成list案例 以及json dict类型