vue项目怎样用nginx反向代理WebSocket请求地址

 更新时间:2023年09月26日 10:42:58   作者:小Qiao  
这篇文章主要介绍了vue项目怎样用nginx反向代理WebSocket请求地址问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue用nginx反向代理WebSocket请求地址

原因

在VUE项目中使用WebSocket时,是将IP与端口进行固定,但是当环境地址发生变更时,就需要在代码中进行修改,并重新打包发布版本,很是麻烦,当然这样也是不可取的。

因此使用nginx反向代理WebSocket就可以解决这个问题。

VUE项目代码片段

<script>
    export default {
        data(){
            return {
                webSocket: null
            }
        },
        mounted(){
            this.initWebSocket();
        },
        methods:{
            initWebSocket(){
                let vm = this;
                let wsServer = `${location.protocol === 'https' ? 'wss' : 'ws'}://${location.host}/websocket`;
                vm.webSocket = new WebSocket(wsServer);
                vm.webSocket.onopen = function(event) {
                };
                vm.webSocket.onmessage = function(msg) {
                };
                vm.webSocket.onClose = function(msg) {
                };
                vm.webSocket.onError = function(err) {
                }
            }
        }
    }
</script>

nginx文件配置

events {
    worker_connections  1024;  ## Default: 1024
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    server {
        listen       9001;
        server_name  localhost;
        location / {
            root   D:/code/ai-village-html/dist/;
            index  index.html index.htm;
        }
        #nginx配置websocket
        location ^~ /websocket {
            proxy_pass http://192.168.1.11:8088; #websocket地址
            proxy_http_version 1.1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_read_timeout 120s;
            proxy_set_header Upgrade websocket;
            proxy_set_header Connection Upgrade;
        }
        location ^~/proxy{
            rewrite ^/proxy/(.*)$ /$1 break; #代理字符串
            proxy_pass http://192.168.1.11:8088; #需要代理的地址
        }
    }
}
 

这样就可以方便、快捷实现在发生环境改变不改动代码的情况下对WebSocket请求进行配置!

vue与nginx配置websocket反代

vue配置websocket反代

创建连接

this.url = `ws://${location.host}/UMS-CLUSTER-WS/websocket/test` // 使用location.host的目的是在当前项目运行的域名和端口号下发起ws连接,例如本地为localhost:80
new WebSocket(this.url) // 创建连接

config配置

vue.config.js的反代中进行如下配置

proxy: {
      '/WS': {
        target: clusterWsServer, // 后台线上环境地址
        pathRewrite: { '^/WS': '' },
        ws: true,
        changeOrigin: true
      }
    }

nginx配置websocket反代

  #nginx配置websocket
  location /WS/ {
        proxy_pass  http://****:8666/; #websocket线上后台地址
        proxy_http_version    1.1;
        proxy_set_header      Host              $host;
        proxy_set_header      X-Real-IP         $remote_addr;
        proxy_set_header      X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_read_timeout    120s;
        proxy_set_header      Upgrade           websocket; #配置连接方式为websocket
        proxy_set_header      Connection        Upgrade;
  }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • VUE-PDF实现pdf在线预览问题

    VUE-PDF实现pdf在线预览问题

    这篇文章主要介绍了VUE-PDF实现pdf在线预览问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue子级如何向父级传递数据(自定义事件)

    Vue子级如何向父级传递数据(自定义事件)

    这篇文章主要介绍了Vue子级如何向父级传递数据(自定义事件),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue2 Vue-cli中使用Typescript的配置详解

    Vue2 Vue-cli中使用Typescript的配置详解

    Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流。下面这篇文章主要给大家介绍了关于Vue2 Vue-cli中使用Typescript的配置的相关资料,需要的朋友可以参考下。
    2017-07-07
  • vue3 vue-draggable-next如何实现拖拽穿梭框效果

    vue3 vue-draggable-next如何实现拖拽穿梭框效果

    这篇文章主要介绍了vue3 vue-draggable-next如何实现拖拽穿梭框效果,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vue3中reactive的对象清空所引发的问题解决方案(清空不了和清空之后再去赋值就赋值不了)

    vue3中reactive的对象清空所引发的问题解决方案(清空不了和清空之后再去赋值就赋值不了)

    在使用reactive定义的变量时,直接赋值会失去响应式,为了清空 filters并确保响应式,可以使用Object.assign({}, filters)或者遍历对象逐个清除属性,本文介绍vue3中reactive的对象清空所引发的问题解决方案(清空不了和清空之后再去赋值就赋值不了),感兴趣的朋友一起看看吧
    2025-02-02
  • 浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用

    浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用

    这篇文章主要介绍了浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vue微信分享到朋友圈 vue微信发送给好友

    vue微信分享到朋友圈 vue微信发送给好友

    这篇文章主要为大家详细介绍了vue微信分享到朋友圈,vue微信发送给好友功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • vue关于接口请求数据过大导致浏览器崩溃的问题

    vue关于接口请求数据过大导致浏览器崩溃的问题

    这篇文章主要介绍了vue关于接口请求数据过大导致浏览器崩溃的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue高效更新UI的方法详解

    Vue高效更新UI的方法详解

    在现代前端开发中,Vue.js以其高效的响应式数据绑定和视图更新机制著称,而这一切的核心技术之一就是虚拟DOM和Diff算法,本文将详细介绍虚拟DOM的概念、Diff算法的工作原理,以及Vue如何利用这些技术高效地更新UI,需要的朋友可以参考下
    2025-02-02
  • Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器

    Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器

    本篇文章主要介绍了Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04

最新评论