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