.netcore部署Linux并结合Nginx反向代理 get started
一、.NetCore网站准备与发布
首先准备好一个ASP.NET Core Web应用程序,我这里就使用新建的示例站点作为demo演示,使用dotnet publish 命令发布网站。
或者使用VS的发布工具进行发布,选中网站右键选择发布,然后选择文件夹形式发布
二、.net core + centos环境准备
2.1 安装centos:这里我选择的版本是CentOS-7,虚拟机选择VMware Workstation Pro,安装步骤可以到网上搜索,这里不作演示。
2.2 安装netcore:到微软.netcore官网可以找到不同系统安装.netcore的执行命令,执行下面三行命令,在centos7上安装.netcore-runtime2.1
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install aspnetcore-runtime-2.1
安装完毕之后,输入命令 dotnet 如果出现提示信息,表示安装.net core 成功,可以继续下一步操作。
包括可以查看.netcore版本号
2.3 安装Nginx:
第一步:sudo yum install epel-release
第二步:sudo yum install nginx
第三步:启动 sudo systemctl start nginx
在浏览器上输入Nginx所在服务器的IP地址,可以看到欢迎页表示安装成功,如果无法访问可以检查下安装Nginx步骤或者防火墙之类的。
If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic:
如果有运行防火墙,那需要允许http和https的通道访问,运行下面三个命令:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
三、上传网站
我们的示例.netcore网站已经制作并发布好了,下一步需要借助一个FTP工具 FileZilla,将发布好的网站文件上传到CentOS的 home/netcore 文件夹下。
四、启动网站并配置Nginx作反向代理
cd进入到刚才上传的网站目录,然后输入命令: dotnet HelloNetCore2.dll 启动网站,分配的端口是5000,localhost:5000
下一步配置Nginx,将80端口映射到示例.netcore网站的5000端口
进入到etc/nginx 目录,找到nginx.config 配置文件,首先注释掉 nginx.conf 对80端口的listen,然后 nginx.conf 文件有下面一行配置
include /etc/nginx/conf.d/*.conf;
意思是会将所有conf.d 下面的所有*.conf配置都会引入进来,所以我们可以不必修改nginx.conf,而是在conf.d 下增加一个属于这个示例网站的自定义配置。
在conf.d目录下,新建一个空的netcore.conf 文件,然后输入下面配置,保存退出。执行:nginx –s reload 使其马上生效
如果一切正常,访问我们的centos服务IP地址,应该就能被Nginx处理访问到我们的NetCore站点。
但是也有可能出现以下我遇到的两种情况:
第一种:出现502错误
原因是由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。接下来我们通过一些命令解决这个问题。
yum install policycoreutils-python sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
第二种:访问centos服务IP地址的时候,被location重定向到5001端口,而5001端口是系统分配给这个站点的Https端口
与此同时,curl netcore 开启的5000端口也没有任何东西返回;
为了研究为什么curl http://localhost:5000 没有任何输出,可以使用 tcpdump 来监听指定IP和指定端口
tcpdump -i lo tcp port and host 127.0.0.1
输入命令后,另外开启一个新的putty客户端进行 curl http://localhost:5000 请求测试
监听输出信息如下,具体解释可以参考网上资料,我们发现其中的过程优先选择使用HTTPS,这很可能是NetCore项目的默认配置造成的。
在net core官网文档查到Startup类默认是建议使用HTTPS的,解决方法有二、一是你在centos上安装好HTTPS证书,二是注释掉app.UseHttpsRedirection(); 重新发布。
注释掉,重新编译发布上传,重启站点即可。
现在访问80端口能成功转发到netcore站点的5000端口了
参考资料:
dotnet pulish 命令:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore21
linux安装netcore :https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current
how-to-install-nginx-on-centos-7:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
解决502问题:https://www.cnblogs.com/ants/p/5732337.html
netcore Https:https://docs.microsoft.com/zh-cn/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio
.netcore部署Linux并结合Nginx反向代理 get started的更多相关文章
- 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动
之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...
- Linux 下的 Nginx 反向代理配置.
最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...
- 【Linux】采用nginx反向代理让websocket 支持 wss
背景:玩swoole 服务 使用Nginx反向代理解决wss问题. 即客户端通过wss协议连接 Nginx 然后 Nginx 通过ws协议和server通讯. 也就是说Nginx负责通讯加解密,Ngi ...
- 【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动
今天来整理下 netcore 在 linux(ubuntu) 上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 ...
- Linux+.Net Core+Nginx(在Linux上使用Nginx反向代理.Net Core 项目)
Linux+.Net Core+Nginx 之前的文章中有提到关于使用Nginx在linux来实现反向代理,今天我们继续加点料.在Centos7中部署.NetCore,然后使用Nginx进行反向代理! ...
- Kestrel 服务器部署多站点问题 (nginx 反向代理)
Kestrel 作为微软的跨平台 web 服务器,有些地方用的好不是很熟. 作为一款嵌套到 dll 中的进程级 web 服务器,在同一台服务器上部署多站点确实还存在一点问题. 今天采用 nginx 做 ...
- linux下配置nginx反向代理例子
官方说明: 例子: 虚拟机ip:192.168.85.3,物理机VMware Network Adapter VMnet8 ip:192.168.85.1 1,准备tomcat 准备一tomcat, ...
- Linux服务-配置Nginx反向代理
任务目标:实现基于轮询的方式调度三台web,并验证结果:实现基于权重的方式调度三台web,并验证结果:实现基于hash的方式调用三台web,并验证结果 由于刚刚做了nfs设置,为了提现实验结果,我在w ...
- [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...
随机推荐
- [javascript] 看知乎学习js事件触发过程
红色箭头代表捕获阶段 蓝色代表目标阶段 绿色代表冒泡阶段 调用元素对象的addEventListener()方法,参数:事件,回调函数,是否捕获(true代表捕获阶段,false代表冒泡阶段,ie浏览 ...
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误几种解决方案
报错信息: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.study.ser ...
- Mybatis插件开发
前面几篇文章介绍了Mybtis中四个重要的对象,其中提到它们都是在Configuration中被创建的,我们一起看一下创建四大对象的方法,代码如下所示: public ParameterHandler ...
- C++基于范围的for循环性能测试(针对std::vector)
1.代码如下: void output1(int x){ if (x == 10000000) { std::cout << x << std::endl; } }const ...
- C++ auto 关键字的使用
C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: ...
- Redis-五种数据类型解析
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- HDU2167(SummerTrainingDay02-D 状态压缩dp)
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- eclipse以O开头的版本安装tomcat插件
最近闲着无聊想着捣鼓下java web ,轻车熟路的在eclipse下载好IDE,有强迫症的我下载了最新版本的(2017-10),然而下载过来的IDE真的是纯净版的,连java web 的new pr ...
- ActiveReports 报表控件V12新特性 -- 无需ETL处理,即可实现跨数据源分析数据
ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...
- VideoView获取本地视频播放
主布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...