nssm 工具把asp.net core mvc变成 windows服务,使用nginx反向代理访问

nssm工具的作用:把项目部署成Windows服务,可以在系统后台运行

1.创建一个asp.net core mvc的项目weblication1

asp.net core mvc项目要成为windows服务需要安装下面的nuget包

bash 复制代码
<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
</ItemGroup>

在program中添加代码

在创建一个asp.net core mvc项目 webapplication2

把program中的usePathBase改为("/app2")

我这里没添加

builder.Host.UseWindowsService();也成功了。有可能是我使用.net 8版本的原因,低版本的应该不可以。

2.发布项目(两个项目都发布)

3.使用nssm工具安装服务

这里就不提供安装包了,可以自己在网上下载

找到文件目录,在地址栏输入 cmd

安装 命令:nssm install

进入图形化界面

配置项说明:

Path:运行应用程序的程序

Startup directory:应用程序所在的目录

Arguments:应用运行的参数

Service name:生成服务的名称

最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。

常用命令:

nssm install servername //创建servername服务,弹出配置界面

nssm start servername //启动服务

nssm stop servername //暂停服务

nssm restart servername //重新启动服务

nssm remove servername //删除创建的servername服务

nssm edit servername//更改servername服务,弹出修改界面

nssm set servername 参数名 参数值 //设置服务参数值

sc delete servername//windows删除服务命令

直接使用windows的服务管理也可以实现服务的操作,服务右键属性 - 恢复即可设置服务挂掉重启等内容。

将应用作成服务(两个项目都要,记得改名称)

1.应用的启动命令是:

bash 复制代码
dotnet WebApplication1.dll --urls=http://*:8888/ --port=8888

2、安装服务:

安装两个一个8888,一个8889。这边就演示一遍

bash 复制代码
Path:C:\Program Files\dotnet\dotnet.exe
Startup directory:C:\Users\pzx\source\repos\WebApplication1\WebApplication1\bin\Release\net8.0\publish
Arguments:WebApplication1.dll --urls=http://localhost:8888/ --port=8888
Service name:webapp1

填入上面的信息,提示succful 安装成功!

查看服务,是否已安装。

需要,右击启动服务(服务可以设置为自动,服务器重启了,也可以直接访问)

webapp1

直接在浏览器里输入:http://localhost:8888/

webapp2

下载nginx服务器

下载地址

https://nginx.org/en/download.html

选择稳定版,windows版本

双击exe即可,这个是绿色版的,无需安装

安装成功(默认80端口)输入IP或localhost 显现下面页面

配置ngixn.conf

在server里面添加下面的配置:

bash 复制代码
    location / {
            root   html;
            index  index.html index.htm;
        }
        location /app1  {
       # 去除路径前缀,以便正确代理
        rewrite ^/app1(/.*)$ $1 break;
        proxy_pass  http://localhost:8888;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300s;

        proxy_redirect    off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }
        #此配置css,js失效时可添加
        location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$ {
        # 去除路径前缀,以便正确代理
        rewrite ^/app1(/.*)$ $1 break;
                        proxy_pass http://localhost:8888;
         }
       location /app2 {
       # 去除路径前缀,以便正确代理
        rewrite ^/app2(/.*)$ $1 break;
        proxy_pass  http://localhost:8889;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300s;

        proxy_redirect    off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        }
         #此配置css,js失效时可添加
        location ~ .*\.(js|css|jpg|jpeg|gif|png|ico|pdf|txt)$ {
        # 去除路径前缀,以便正确代理
        rewrite ^/app2(/.*)$ $1 break;
          proxy_pass http://localhost:8889;
         }

修改后,要把nginx进程结束,在重启启动

直接在浏览器输入

http://localhost/app1

http://localhsot/app2

上面就一台服务器代理两个不同的服务。

Linux下也一样的配置

使用 vim 打开

bash 复制代码
vim /etc/nginx/sites-enabled/default

配置一样

nginx语法检查

bash 复制代码
 nginx -t

重启服务

bash 复制代码
systemctl restart nginx
相关推荐
JoySSLLian15 小时前
手把手教你安装免费SSL证书(附宝塔/Nginx/Apache配置教程)
网络·人工智能·网络协议·tcp/ip·nginx·apache·ssl
一分半心动17 小时前
宝塔面板lnmp架构,tp6框架网站伪静态
nginx·php
全栈工程师修炼指南21 小时前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl
脏脏a1 天前
告别物理出勤:Nginx 搭配 cpolar 实现远程开发无缝协作
运维·nginx
Dxy12393102161 天前
413 Request Entity Too Large 原因与解决方案
nginx
CYpdpjRnUE1 天前
光储一体机仿真模型搭建之旅
nginx
小天源1 天前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067
Volunteer Technology2 天前
FastDFS+Nginx
运维·nginx
qinyia2 天前
**使用AI助手在智慧运维中快速定位并修复服务异常:以Nginx配置错误导致502错误为例**
linux·运维·服务器·数据库·mysql·nginx·自动化
404Clukay2 天前
Windows Server 配置 Let‘s Encrypt 免费 HTTPS 证书(WACS + Nginx 自动化方案)
windows·nginx·https