.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部署