前端用的是 Vue+Webpack,后端 API 用的是 Flask
本地开发调试的时候,前端运行在 localhost:8080,后端运行在 localhost:5000
现在由于学校网络限制,外网只能访问 80 端口。所以我想让用户访问的时候,通过 example.com:80 来访问前端,然后通过 example:80/backend/XXXX_API 来访问后端
由于经验不足,我现在整个思路很混乱,整理一下大致有以下疑问:
以上编程术语很可能使用不当,请见谅
大佬们请肆意拍砖,谢谢!
1
starvedcat OP 现在还已知,我这台服务器的 IP 绑定了好几个域名,所以我想让 domain1.com 做前端,domain2.com 做后端(例如通过编辑 apache 的 conf )。这样合理吗?或者说和“ domain1.com+domain1.com/backend ”的方案比哪个更合理?
|
2
whileFalse 2018-06-05 07:23:52 +08:00 1
1. 在 docker 里面 npm install && npm run build,不要在 docker 里面 git clone。使用合理的分层保证不会每次都 install。这是保证你的部署和代码一致的方法。
2. 这个方法没问题。除非你想额外部署一个 Nginx。如果你是个人使用的场景,没必要。 3. 用 docker-compose 4. 就你的场景,domain1.com+domain1.com/backend 比较合适。 |
3
MonoLogueChi 2018-06-05 07:55:33 +08:00 via Android 1
先问一个问题,你的前端和后端是跑在相同的机器上,还是不同的机器上。
前端可以用 Nginx 反代,或者是你提到的 Apache。 如果是在同一机器上,后端完全没必要去额外搞个反代啊,同机器上前端访问后端又不是外网,哪个端口无所谓啊。 在不同的机器上,你可能要每个机器加一层反向代理了。 |
4
starvedcat OP @MonoLogueChi #3 谢谢,是在相同的机器上的
|
5
starvedcat OP @whileFalse #2 谢谢!!
|
6
cliberal 2018-06-05 08:43:36 +08:00 via iPhone
@whileFalse 如何保证不会每次都 install 呢 🤔️
|
7
gamexg 2018-06-05 08:52:29 +08:00
如果还有其它网站,可以考虑启动个
https://github.com/jwilder/nginx-proxy 加上这个就能自动签发 https 证书 https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion |
8
starvedcat OP @gamexg #7 谢了,不过暂时用不上,学校的域名有 https
|