vue項(xiàng)目怎樣用nginx反向代理WebSocket請(qǐng)求地址
vue用nginx反向代理WebSocket請(qǐng)求地址
原因
在VUE項(xiàng)目中使用WebSocket時(shí),是將IP與端口進(jìn)行固定,但是當(dāng)環(huán)境地址發(fā)生變更時(shí),就需要在代碼中進(jìn)行修改,并重新打包發(fā)布版本,很是麻煩,當(dāng)然這樣也是不可取的。
因此使用nginx反向代理WebSocket就可以解決這個(gè)問題。
VUE項(xiàng)目代碼片段
<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; #需要代理的地址 } } }
這樣就可以方便、快捷實(shí)現(xiàn)在發(fā)生環(huán)境改變不改動(dòng)代碼的情況下對(duì)WebSocket請(qǐng)求進(jìn)行配置!
vue與nginx配置websocket反代
vue配置websocket反代
創(chuàng)建連接
this.url = `ws://${location.host}/UMS-CLUSTER-WS/websocket/test` // 使用location.host的目的是在當(dāng)前項(xiàng)目運(yùn)行的域名和端口號(hào)下發(fā)起ws連接,例如本地為localhost:80 new WebSocket(this.url) // 創(chuàng)建連接
config配置
vue.config.js的反代中進(jìn)行如下配置
proxy: { ? ? ? '/WS': { ? ? ? ? target: clusterWsServer, // 后臺(tái)線上環(huán)境地址 ? ? ? ? pathRewrite: { '^/WS': '' }, ? ? ? ? ws: true, ? ? ? ? changeOrigin: true ? ? ? } ? ? }
nginx配置websocket反代
? #nginx配置websocket ? location /WS/ { ? ? ? ? proxy_pass ?http://****:8666/; #websocket線上后臺(tái)地址 ? ? ? ? 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; ? }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VUE-PDF實(shí)現(xiàn)pdf在線預(yù)覽問題
這篇文章主要介紹了VUE-PDF實(shí)現(xiàn)pdf在線預(yù)覽問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue子級(jí)如何向父級(jí)傳遞數(shù)據(jù)(自定義事件)
這篇文章主要介紹了Vue子級(jí)如何向父級(jí)傳遞數(shù)據(jù)(自定義事件),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Vue2 Vue-cli中使用Typescript的配置詳解
Vue作為前端三大框架之一截至到目前在github上以收獲44,873顆星,足以說明其以悄然成為主流。下面這篇文章主要給大家介紹了關(guān)于Vue2 Vue-cli中使用Typescript的配置的相關(guān)資料,需要的朋友可以參考下。2017-07-07vue3 vue-draggable-next如何實(shí)現(xiàn)拖拽穿梭框效果
這篇文章主要介紹了vue3 vue-draggable-next如何實(shí)現(xiàn)拖拽穿梭框效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)
在使用reactive定義的變量時(shí),直接賦值會(huì)失去響應(yīng)式,為了清空?filters并確保響應(yīng)式,可以使用Object.assign({},?filters)或者遍歷對(duì)象逐個(gè)清除屬性,本文介紹vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了),感興趣的朋友一起看看吧2025-02-02淺談Vue2.4.0 $attrs與inheritAttrs的具體使用
這篇文章主要介紹了淺談Vue2.4.0 $attrs與inheritAttrs的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03vue關(guān)于接口請(qǐng)求數(shù)據(jù)過大導(dǎo)致瀏覽器崩潰的問題
這篇文章主要介紹了vue關(guān)于接口請(qǐng)求數(shù)據(jù)過大導(dǎo)致瀏覽器崩潰的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08Vuejs入門教程之Vue生命周期,數(shù)據(jù),手動(dòng)掛載,指令,過濾器
本篇文章主要介紹了Vuejs入門教程之Vue生命周期,數(shù)據(jù),手動(dòng)掛載,指令,過濾器的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04