​本篇主要体验一下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 <发布路径.***.dll>
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 <发布路径.***.dll>在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。

.NetCore(四) 在Nginx部署的更多相关文章

  1. NetCore在Centos7上部署和Nginx集群部署访问

    NetCore在Linux上部署 工具:WMWare虚拟机,Wmware12,CentOS7ISO镜像,VS2017 1.安装虚拟机,过程略,网上一搜一大把 2.用VS2017建一个NetCore的W ...

  2. CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署

    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...

  3. 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署

    庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介      从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...

  4. CentOS Mono Nginx 部署 MVC4+WebApi

    CentOS Mono Nginx 部署 MVC4+WebApi 经过几天的折磨,终于在CentOS上成功部署了MVC4+WebApi.Mono上的服务器推荐两种:Jexus(国产高人写的一款很牛的服 ...

  5. vue+uwsgi+nginx部署路飞学城

    vue+uwsgi+nginx部署路飞学城   有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码 ht ...

  6. linux vue uwsgi nginx 部署路飞学城 安装 vue

    vue+uwsgi+nginx部署路飞学城 有一天,老男孩的苑日天给我发来了两个神秘代码,听说是和mjj的结晶 超哥将这两个代码,放到了一个网站上,大家可以自行下载 路飞学城django代码#这个代码 ...

  7. AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署

    一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...

  8. Nginx部署多个站点

    Nginx部署多个站点 一,介绍与需求 1.1,介绍 详细介绍请看nginx代理部署Vue与React项目,在这儿主要介绍多个站点的配置 1.2,需求 有时候想在一台服务器上为不同的域名/不同的二级域 ...

  9. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

随机推荐

  1. log4j 详细使用教程【转载】

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log ...

  2. ElasticSearch5.0之后的改变

    ES5的变化 search_type=count和scan都移除了 count可以用size=0代替 GET /my_index/_search { "size": 0, &quo ...

  3. spring boot -thymeleaf-域对象操作

    后台代码

  4. app自动化测试之实战应用(百度app简单测试)

    模拟在百度app中搜索python相关内容代码如下: from appium import webdriver desired_caps = {} desired_caps['deviceName'] ...

  5. Linux学习笔记之六————Linux常用命令之系统管理

    <1>查看当前日历:cal cal命令用于查看当前日历,-y显示整年日历: <2>显示或设置时间:date 设置时间格式(需要管理员权限): date [MMDDhhmm[[C ...

  6. 关于vue项目中,手动定义的scrollTop的值

    在项目中,有时需要控制scrollTop的值,比如有一个列表页,点击任意一个列表可以进入其详情页,这时如果你要返回的话, 肯定是希望还回到刚刚点击的地方,我当时的解决办法是,本地存下点击那一刻的scr ...

  7. SpringMVC之文件上传异常处理

    一般情况下,对上传的文件会进行大小的限制.如果超过指定大小时会抛出异常,一般会对异常进行捕获并友好的显示出来.以下用SpringMVC之文件上传进行完善. 首先配置CommonsMultipartRe ...

  8. js中的模块化

    前阵子一直忙着找实习,发现已经有一段时间没写博客了,面试很多时候会被问到模块化,今天就让我们一起来总结下把 一.什么是模块化 在js出现的时候,js一般只是用来实现一些简单的交互,后来js开始得到重视 ...

  9. Vue2.5开发去哪儿网App 详情页面开发

    一,banner 图的设计 1. 新建detail的路由 import Detail from '@/pages/detail/Detail' ...... { path: '/detail', na ...

  10. SpringMVC4+MyBatis+SQL Server2014实现读写分离

    前言 基于mybatis的AbstractRoutingDataSource和Interceptor用拦截器的方式实现读写分离,根据MappedStatement的boundsql,查询sql的sel ...