今天要打包前端项目生产镜像部署,学习到了关于env.development、env.production以及nginx.conf的关系
首先是env.development,这里面主要放的是我们本地开发时的代理服务器(需要代理来解决跨域问题的话)
当你不需要配置环境变量的时候,可以将这个理解为线上的env.development,即项目上线之后,代理服务器这些用的就不是env.development的配置了,所以需要将线上想要的访问的地址写死在这里就行
当需要部署前端应用时,添加应用的环境变量的时候,例如前端的访问地址前缀之类的,可以将这些前缀作为环境变量,写在nginx.conf中。例如:
server {
listen 8080;
server_name localhost;
location ^~/mgrcontrol/{
proxy_pass '$MGR_SERVICE';
}
location /{
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
root /opt/apps/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
即线上访问前缀为mgrcontrol时,会去寻找环境变量中$MGR_SERVICE的值,然后进行访问地址的替换
env.production和nginx.conf的区别就在于,你是否想要将前端访问的地址作为环境变量暴露出去,这么做的意义在于可以线上随时修改访问的地址,而不需要再去改动代码。