【Nginx】零基础在Windows服务器部署.NET Core + Nginx全解(避坑大全)
Windows Nginx部署.NET Core、.NET Core发布教程、反向代理配置:.NET开发者 | IT运维 | 全栈新手:熟悉C#基础语法。
【Nginx】零基础在Windows服务器部署.NET Core + Nginx全解(避坑大全)
关键词:Windows Nginx部署.NET Core、.NET Core发布教程、反向代理配置
适合人群:.NET开发者 | IT运维 | 全栈新手
前置知识:熟悉C#基础语法
文章目录
一、环境准备:只需5分钟
1.1 安装.NET Core运行时
在开始部署.NET Core 应用之前,我们需要先安装.NET Core 运行时,它是运行.NET Core 应用程序的基础环境。
步骤
- 打开浏览器,访问.NET Core Runtime 官方下载页面。这个页面会列出所有可用的.NET Core 版本。
- 根据你项目所使用的.NET Core 版本进行选择。例如,如果你的项目是基于.NET Core 6.0 开发的,就在所有.NET 版本中仔细查找对应的 6.0 版本,然后点击下载链接。
- 为什么要根据项目版本选择呢?因为不同版本的.NET Core 可能有一些特性和 API 的差异,如果版本不匹配,应用程序可能无法正常运行。
- 下载完成后,运行安装程序。在安装过程中,你会看到一些选项:
- 勾选 “安装运行时”:这个选项是必须勾选的,因为只有安装了运行时,我们的.NET Core 应用才能在服务器上运行。
- 勾选 “添加到系统 PATH”:这个选项也很重要,它会将.NET Core 的相关命令添加到系统的环境变量中,这样我们就可以在命令行中直接使用
dotnet
命令了。如果不勾选,后续在命令行中使用dotnet
命令时可能会出现 “命令找不到” 的错误。
✅ 勾选“安装运行时”和“添加到系统PATH”!
1.2 安装Nginx for Windows
Nginx 是一个高性能的 Web 服务器,我们使用它来作为反向代理,将用户的请求转发到我们的.NET Core 应用上。
步骤
- 同样打开浏览器,进入Nginx 官网下载页。
- 在页面中找到适合 Windows 系统的版本,一般会有多个版本可供选择,选择稳定版本即可。
- 如何判断哪个是稳定版本呢?通常在版本号后面会有一些标识,如 “Stable” 表示稳定版本,“Mainline” 表示开发版本,我们选择 “Stable” 版本就可以了。
- 下载完成后,将下载的压缩包解压到
C:\nginx
目录。- 为什么选择这个目录呢?这个目录是比较常见的 Nginx 安装目录,方便我们后续的配置和管理。当然,你也可以选择其他目录,但要注意在后续的配置中相应地修改路径。
解压到 C:\nginx
目录:
二、发布.NET Core项目
2.1 生成发布文件
在开发环境中,我们的.NET Core 项目通常包含很多开发时依赖的文件,这些文件在生产环境中是不需要的。所以,我们需要生成一个发布版本,只包含运行应用程序所必需的文件。
步骤
-
打开命令行工具(如 PowerShell 或 CMD)。
-
使用
cd
命令切换到你的.NET Core 项目的根目录。例如,如果你的项目在D:\MyProjects\MyApp
目录下,那么在命令行中输入:cd D:\MyProjects\MyApp
-
在项目根目录执行以下命令(以 Release 模式为例):
dotnet publish -c Release -o ./publish
- 这里的
-c Release
表示使用 Release 模式进行发布,Release 模式会对代码进行优化,去除调试信息,使应用程序运行得更快。 -o ./publish
表示将发布文件输出到当前目录下的publish
文件夹中。
- 这里的
-
等待命令执行完成,成功生成
publish
文件夹。这个文件夹中包含了我们应用程序运行所需的所有文件。
2.2 上传到服务器
生成发布文件后,我们需要将这些文件上传到服务器上。
步骤
- 将整个
publish
文件夹复制到服务器目录(如C:\www\myapp
)。- 为什么要选择这个目录呢?这个目录是比较常见的 Web 应用程序部署目录,方便我们后续的管理。同时,要确保路径无空格和特殊字符,因为有些服务器软件可能不支持路径中包含空格和特殊字符,可能会导致应用程序无法正常启动。
- 可以使用 FTP 工具(如 FileZilla)来进行文件的上传,也可以直接在服务器上通过共享文件夹的方式进行复制。
三、配置Nginx反向代理
Nginx 的反向代理功能可以将用户的请求转发到我们的.NET Core 应用上,这样用户就可以通过访问 Nginx 的地址来访问我们的应用了。
3.1 修改nginx.conf
Nginx 的配置文件是nginx.conf
,我们需要对它进行修改来配置反向代理。
步骤
-
找到
C:\nginx\conf\nginx.conf
文件,使用文本编辑器(如 Notepad++)打开它。 -
在
http
块内添加以下配置:server { listen 80; # 监听80端口,这是HTTP的默认端口,用户通过浏览器访问时通常使用这个端口 server_name your_domain.com; # 这里填写你的域名,如果没有域名,可以填写服务器的IP地址 location / { proxy_pass http://localhost:5000; # 将请求转发到本地的5000端口,这是.NET Core应用默认监听的端口 proxy_http_version 1.1; # 使用HTTP 1.1协议进行转发 proxy_set_header Upgrade $http_upgrade; # 支持WebSockets协议 proxy_set_header Connection keep-alive; # 保持连接,提高性能 proxy_set_header Host $host; # 将请求的Host头信息传递给后端服务器 proxy_cache_bypass $http_upgrade; # 对于WebSockets请求,不使用缓存 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递客户端的真实IP地址 proxy_set_header X-Forwarded-Proto $scheme; # 传递请求的协议(HTTP或HTTPS) } }
-
保存文件。
四、启动服务并验证
配置完成后,我们需要启动.NET Core 应用和 Nginx 服务,并验证是否可以正常访问。
4.1 运行.NET Core应用
在服务器上进入C:\www\myapp
目录,执行以下命令:
dotnet YourApp.dll
这里的YourApp.dll
是你的.NET Core 应用的主程序文件,需要根据实际情况进行替换。
4.2 启动Nginx
有两种方式可以启动 Nginx:
-
双击
nginx.exe
:在C:\nginx
目录下找到nginx.exe
文件,双击它即可启动 Nginx。 -
命令行执行:打开命令行工具,输入以下命令:
cd C:\nginx start nginx
检查进程是否运行
启动 Nginx 后,我们可以通过以下命令检查 Nginx 进程是否正在运行:
tasklist /fi "imagename eq nginx.exe"
如果看到nginx.exe
的进程信息,说明 Nginx 已经成功启动。
4.3 验证访问
打开浏览器,输入服务器的 IP 地址或域名,如果看到应用程序的页面,说明部署成功。
五、设置后台服务(防止关闭窗口终止进程)
如果我们直接在命令行中运行.NET Core 应用,当关闭命令行窗口时,应用程序也会随之停止。为了让应用程序在后台持续运行,我们可以将它设置为 Windows 服务。
5.1 创建Windows服务
我们使用 NSSM 工具来创建 Windows 服务。
步骤
-
下载 NSSM 工具,下载地址为:https://nssm.cc/download。
-
解压 nssm 到
C:\nssm
目录。 -
打开命令行工具,执行以下命令:
nssm install MyAppService
这里的
MyAppService
是服务的名称,你可以根据实际情况进行修改。 -
在弹出的窗口中进行配置:
- Path:
C:\Program Files\dotnet\dotnet.exe
,这是.NET Core 运行时的可执行文件路径。 - Arguments:
C:\www\myapp\YourApp.dll
,这是你的.NET Core 应用的主程序文件路径,需要根据实际情况进行替换。 - Startup directory:
C:\www\myapp
,这是应用程序的启动目录。
- Path:
5.2 启动服务
配置完成后,在命令行中执行以下命令来启动服务:
nssm start MyAppService
检查服务状态
可以通过以下步骤检查服务的状态:
- 打开 “服务” 窗口:可以通过 “控制面板” -> “管理工具” -> “服务” 打开,也可以在命令行中输入
services.msc
打开。 - 在服务列表中找到
MyAppService
,查看它的状态是否为 “正在运行”。
六、高级配置
6.1 开启HTTPS(需SSL证书)
如果我们需要使用 HTTPS 协议来保护用户的数据传输,就需要开启 HTTPS。开启 HTTPS 需要 SSL 证书,你可以从证书颁发机构(如 Let’s Encrypt)申请免费的 SSL 证书。
步骤
-
在
nginx.conf
中修改监听端口为 443,并添加 SSL 证书的配置:server { listen 443 ssl; # 监听443端口,这是HTTPS的默认端口 server_name your_domain.com; # 这里填写你的域名 ssl_certificate C:/ssl/your_domain.crt; # SSL证书的公钥文件路径 ssl_certificate_key C:/ssl/your_domain.key; # SSL证书的私钥文件路径 # ...其余配置同上... }
- 这里的
C:/ssl/your_domain.crt
和C:/ssl/your_domain.key
需要根据你实际的 SSL 证书文件路径进行修改。
- 这里的
6.2 负载均衡配置
当我们的应用程序需要处理大量请求时,单个服务器可能无法满足需求,这时我们可以使用负载均衡来将请求分发到多个服务器上。
步骤
在nginx.conf
中添加以下配置:
upstream dotnet_servers {
server localhost:5000; # 第一个.NET Core应用服务器的地址和端口
server 192.168.1.100:5000; # 第二个.NET Core应用服务器的地址和端口,可以根据实际情况添加更多服务器
}
server {
location / {
proxy_pass http://dotnet_servers; # 将请求转发到负载均衡组
}
}
七、高频问题排查指南
问题现象 | 解决方案 |
---|---|
502 Bad Gateway | 1. 检查.NET Core 应用是否运行:可以通过任务管理器或命令行工具查看dotnet YourApp.dll 进程是否存在。2. 确认 Nginx 的 proxy_pass 端口与 Kestrel 一致:Kestrel 是.NET Core 内置的 Web 服务器,默认监听 5000 端口,确保 Nginx 的proxy_pass 配置中的端口与 Kestrel 监听的端口一致。 |
应用启动失败 | 1. 运行dotnet YourApp.dll 查看报错:在命令行中执行dotnet YourApp.dll 命令,查看是否有报错信息,根据报错信息进行排查。2. 确保已安装对应版本的.NET Core 运行时:检查服务器上安装的.NET Core 运行时版本是否与项目所使用的版本一致。 |
Nginx 无法启动 | 1. 执行nginx -t 检查配置语法:在命令行中执行nginx -t 命令,检查nginx.conf 文件的语法是否正确,如果有错误,根据提示进行修改。2. 关闭占用 80 端口的程序(如 IIS):有些服务器可能已经安装了其他 Web 服务器(如 IIS),这些服务器可能会占用 80 端口,导致 Nginx 无法启动,需要关闭这些程序或修改它们的监听端口。 |
静态文件(如图片)无法加载 | 1. 在 Nginx 中添加静态文件路径配置:在nginx.conf 中添加静态文件的路径配置,例如: nginx<br>location /static/ {<br> root C:/www/myapp/wwwroot;<br>}<br> 这里的/static/ 是静态文件的 URL 前缀,C:/www/myapp/wwwroot 是静态文件的实际存储路径,需要根据实际情况进行修改。 2. 检查文件权限:确保服务器上的静态文件目录有足够的权限让 Nginx 访问。 |
八、配置资源
📥 点击下载 Nginx 配置模板
💬 如果遇到其他部署问题,欢迎评论区留言!
点赞⭐️ + 收藏📁 + 关注👉 获取更多.NET实战技巧!
更多推荐
所有评论(0)