.NetCore(四)在Nginx部署

作者 : 开心源码 本文共1784个字,预计阅读时间需要5分钟 发布时间: 2022-05-11 共59人阅读

.NetCore(四)在Nginx部署

本篇主要体验一下Nginx的用,之前只接触过IIS。

一、Nginx

a) ASP.NET Core内置了Kestrel服务器,但功可以简单,主要使用于SelfHost,正式运行还是要依赖IIS、Apache、Nginx等功可以全面的服务器,为ASP.NET Core程序提供相似缓存、压缩请求、SSL终端等高深的特性或者功可以。这两种服务器的关系是:Nginx、IIS等作为Kestrel的反向代理商服务器。

反向代理商、正向代理商都不懂,大概的意思是:这两种代理商都处在真正要交互的用户端与服务器之间,但正向代理商要为用户端代理商,科学上网工具应该就是这种(正向代理商);反向代理商则是为服务端作代理商,置于真正的服务器之前,提供安全、缓存、负载均衡等功可以。正向代理商的配置在用户端,需要使用户主动配置代理商服务器的IP、域名等;而反向代理商服务器的配置是服务端的事,使用户能不必知道反向代理商服务器的存在。

b) Nginx的配置和部署

首先需要再应使用程序的Startup.Configure中增加与URI重点向和安全策略相关的代码,这些都是包Microsoft.AspNetCore.HttpOverrides下的方法:

app.UseForwardedHeaders(new ForwardedHeadersOptions

{

ForwardedHeaders = ForwardedHeaders.XForwardedFor

| ForwardedHeaders.XForwardedProto

});

而后测试代码能发布了,假如在linux下创立,能用dotnet publish命令,完成后会告知发布路径。

接下来安装nginx(sudo apt-get install nginx),nginx会被自动作为守护进程(daemon),但第一次安装后需要手动启动服务(sudo service nginx start)。

打开/etc/nginx/sites-available/default文件并将内容替换为:

server {

listen 80;

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;

}

}

这样就配置好了从80端口到5000端口的代理商,asp.net core程序的默认端口为5000。运行sudo nginx -s reload让nginx重新加载配置。

随后创立service definition file(sudo gedit /etc/systemd/system/kestrel-hellomvc.service),直接使用gedit了,方便复制粘贴,vi还是不适合我这使用惯图形界面的程序员。

从文档复制配置内容:

[Unit]

Description=

[Service]

WorkingDirectory=

ExecStart=/usr/bin/dotnet

Restart=always

RestartSec=10 # Restart service after 10 seconds if dotnet service crashes

SyslogIdentifier=dotnet-example

User=www-data

Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]

WantedBy=multi-user.target

保存后,先执行dotnet 在kesrtel服务器中启动程序,而后顺序执行如下命令,以启动刚刚创立的service definition file:

systemctl enable kestrel-hellomvc.service

systemctl start kestrel-hellomvc.service

执行systemctl status kestrel-hellomvc.service能查看能否成功。

没问题遍部署完成了,通过127.0.0.1:80能正常访问网站,从报文消息头中也能看到响应是来自Nginx。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » .NetCore(四)在Nginx部署

发表回复