Vue Js Nginx Docker 连接到后端

Posted

技术标签:

【中文标题】Vue Js Nginx Docker 连接到后端【英文标题】:Vue Js Nginx Docker connect to Backend 【发布时间】:2020-12-27 17:31:53 【问题描述】:

我开发了 vue js 前端,我可以使用 axios 调用与后端通信,当我调用时,我需要指定后端服务端口和端点。如何使用 nginx 和 docker,然后在使用 nginx 和 docker 之后,应用程序如何与后端通信?最终我需要在 Kubernetes 集群上部署前端和后端服务。

我已经阅读了很多关于此的教程,但我没有明确的概念,也需要实施解决方案。我以前从未使用过 nginx

后端:http://localhost:8084

这是我的 axios 调用

import axios from 'axios'



const API_URL = 'http://localhost:8084'



    class NotificationDataService 
    
        
        retrieveAllNotifications() 
            
            return axios.get(`$API_URL/notification/getall`);
        
    
    
    
    
    
    
    export default new NotificationDataService()  

【问题讨论】:

【参考方案1】:

使用 Docker(以及 Kubernetes)方法,您必须将容器与前端以及容器与后端分开。

在 Kubernetes 中,您可以使用 Ingress。它是一个反向代理,所以你不需要 Nginx。 https://kubernetes.io/docs/concepts/services-networking/ingress/

在你的Vue.js应用中配置Backend的URL,我建议你不要像你一样使用常量变量,而是使用Framework的配置系统:https://cli.vuejs.org/guide/mode-and-env.html#modes。

您需要通过 Ingress 公开您的前端和后端,因为您的 Axios 调用是从客户端发送到后端的。所以你可以:

www.mydomain.com/ 用于您的前端

www.mydomain.com/api 用于您的后端

现在你的前端只调用了www.mydomain.com/api

翻译为www.DeepL.com/Translator(免费版)

【讨论】:

以上是关于Vue Js Nginx Docker 连接到后端的主要内容,如果未能解决你的问题,请参考以下文章

如果端口被隐藏,Docker 的 CORS 问题

后端容器 ip 无法使用 docker 连接到数据库 mysql

docker nginx和php,php无法连接到localhost

无法使用 django-channels 连接到 websocket,docker 上的 nginx 作为服务

Nginx 错误失败(111:连接被拒绝)同时连接到上游,docker-compose nodejs

Nginx + Docker Compose-连接到上游时connect()失败(111:连接被拒绝)