docker nginx部署.net core后端站点和angular前端站点
首先声明,服务器是linux 版本是ubuntu server 18.04,不是windows server。windows server 2016放弃治疗了,2019可能会有改善,不过云厂商的公共镜像并没有。windows container折腾死人啊.

架构如上图所示,.net core应用通过docker运行,监听11101端口,不对外部开放。
angular应用通过nginx 镜像运行,监听11102端口,不对外部开放。
主nginx容器监听某个域名80端口,配置端口转发至11101,监听另一个域名的80端口,配置端口转发至11102。
这样对于外部来说就像是直接通过那两个域名进行访问一样。
三个容器运行情况如下所示,.net core应用容器监听11101端口,ng应用容器监听11102端口,nginx容器监听80和443端口

nginx的配置如下。

用的是华为云的CES,有个小坑,就是localhost总是用不了,得用局域网IP, 我这里配置的就是192.168.1.122这里除了转发请求外还有两个点需要注意,Abp.TenantId请求头中有小数点.对于nginx来说是非法的请求头,默认是会被过滤掉的,所以需要手动配置关闭过滤,也就是图中的
ignore_invalid_headers off;
说实话被这个坑困扰了好久,最终还是在abp的github issues中找到了。
还有另一个就是url rewrite的问题,之前部署在iis是安装了iis 的rewrite模块,但在nginx中url rewrite是重定向配置,也是找了好久才找到是url和文件路径匹配。解决这个问题需要修改前端站点的nginx配置

加上标记的那行,表示url和文件路径匹配。
后两行是设定index所在路径。
这样配置的效果就是http请求转发到了前端ng站点,https的请求转发到了.net core的webapi站点。
前端站点每个容器都要进去修改nginx配置文件也很麻烦,既然如此,那当然是改nginx镜像啦。下一篇见。
docker nginx部署.net core后端站点和angular前端站点的更多相关文章
- Ubuntu 下使用 Nginx 部署 .NET Core 2.0 网站
前言 本文介绍如何在 Ubuntu 16.04 服务器上安装 .NET Core 2.0 SDK.创建项目与发布,并使用 Nginx 部署 .NET Core 2.0 Web 项目. 安装 .NET ...
- CentOS 7 Nginx部署.NET Core Web应用
部署.NET Core运行时 必要前提 在安装.NET Core前,需要注册Microsoft签名秘钥并添加Microsoft产品提要,每台机器只需要注册一次,执行如下命令: sudo rpm -Uv ...
- .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序
确认第二步中的软件已安装完成 lrzsz文件上传下载软件 zip与unzip压缩包软件 net core 相关软件 确认上述软件安装完成之后,开始部署程序 创建部署文件夹 我的习惯是在usr文件夹下新 ...
- nginx 部署 .net core 获取的客户端ip为127.0.0.1
采用nginx和.net core 部署一套api接口到服务器上,发现获取到的ip地址为127.0.0.1 经过检查发现,需要在nginx配置上以下参数 proxy_set_header Host $ ...
- Linux +Docker +Nginx 部署代理转发初探
很多开发人员仅仅只会码代码,如果让开发人员部署一些深入点的东西,或者做负载均衡等,很多开发人员估计就懵逼了,作为一个专业的开发还需要懂一些基本的运维知识:虽然说在互联网行业中,中小企业都有一个牛逼的运 ...
- Centos8 Docker+Nginx部署Asp.Net Core Nginx正向代理与反向代理 负载均衡实现无状态更新
首先了解Nginx 相关介绍(正向代理和反向代理区别) 所谓代理就是一个代表.一个渠道: 此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称 ...
- nginx部署dotnet core站点
步骤 aspnetcore程序端口号5001,实际外部端口号8001,相当于把8001收到的请求转发给5001. 把发布出来的文件全部丢掉 /var/www/JuXiangTou 里面去.可以用scp ...
- Linux文档整理之【Jenkins+Docker自动化部署.Net Core】
这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相 ...
- Docker+Nginx部署Angular
在部署Angular生产环境之前,需要电脑已经安装docker. 添加Dockerfile在已经完成的Angular项目的项目根目录下添加Dockerfile文件. Dockerfile文件内容: F ...
随机推荐
- 使用Visual Studio进行单元测试-Part3
本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 测试覆盖率的统计 测试分组 测试Setup/TearDown 测试调试 Exception测试 代码覆盖率的统计 VS下面 ...
- 给.sh文件添加可执行权限
有时我们运行.sh文件时会发现没有权限,具体解决方案如下 第一种:bash+执行文件 第二种:chmod命令 如果给所有人添加可执行权限:chmod a+x 文件名:如果给文件所有者添加可执行权限:c ...
- 机器学习:scikit-learn中算法的调用、封装并使用自己所写的算法
一.scikit-learn库中的kNN算法 scikit-learn库中,所有机器学习算法都是以面向对象的形式进行包装的: 所有scikit-learn库中机器学习算法的使用过程:调用.实例化.fi ...
- 【转】 Pro Android学习笔记(六八):HTTP服务(2):HTTP POST
目录(?)[-] 找一个测试网站 HTTP POST小例子 上次学习了HTTP GET请求,这次学习一下HTTP POST. 找一个测试网站 小例子好写,但要找个测试网站就有些麻烦,一下子无从入手,都 ...
- Hander----使用
public class MainActivity extends Activity { private EditText UITxt; private Button updateUIBtn; pri ...
- [计数问题dp]子数列的个数
http://www.51nod.com/tutorial/course.html#!courseId=15 解题关键:主要是一种思想 $dp[i] = dp[i - 1]*2$ 如果a[i]不在之前 ...
- docker里安装ubuntu
使用 Ubuntu 官方镜像 Ubuntu 相关的镜像有很多,这里使用 -s 10 参数,只搜索那些被收藏 10 次以上的镜像 $ docker search -s 10 ubuntu NAME DE ...
- 8、泛型程序设计与c++标准模板库2.2向量容器
向量容器属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问).这一点与c++语言支持的基本数组类型相同,但基本数据类型不是面向对象的.而面向对象的向量是动态结构 ...
- Entity Framework Code-First(10.1):EntityTypeConfiguration
EntityTypeConfiguration Class in Code-First: Before we start to configure using Fluent API, let's se ...
- 19. CTF综合靶机渗透(十二)
靶机说明: 靶机主题来自美剧<黑客军团> 本次靶机有三个flag,难度在初级到中级,非常适合新手训练学习,不需要逆向技术,目标就是找到三个key,并且拿到主机root权限. 渗透过程: 本 ...