项目一般经历过dev、st、uat等环节之后才能正式部署到生产。对于不同的环境有不同的配置,比如数据库配置、反向代理配置等等。大部分项目可以通过环境变量配置区分dev、st、uat、prd等环境。Nodejs项目也可以采用这种方式实现切换。
以部署在docker中的nodejs为例,阐述如何在不同环境中使用不同的反向代理。
项目概况:nodejs项目,express框架,部署在docker中,使用反向代理请求不同项目的资源。
一、反向代理配置
比如,需要配置dev的反向代理,新建一个专门用于dev反向代理的文件,dev-proxy.js
module.exports = function(){
var proxy-middle = require('http-proxy-middleware');
this.setProxy=function(app){
app.use('/A',proxy-middle({
target:'http://A.com/',
changeOrigin:true,
pathRewrite:{'^/A':''}
}));
}
}
在nodejs中使用http-proxy-middleware插件实现反向代理。
setProxy中需要将express的一个实例作为参数传入,并在反向代理文件中逐个配置需要代理的路由。
二、docker中的环境变量设置
项目部署在Kubernetes中,在部署文件中设置环境变量,如对dev环境的部署文件关于环境变量的配置如下: