vue項(xiàng)目怎樣用nginx反向代理WebSocket請求地址
vue用nginx反向代理WebSocket請求地址
原因
在VUE項(xiàng)目中使用WebSocket時,是將IP與端口進(jìn)行固定,但是當(dāng)環(huán)境地址發(fā)生變更時,就需要在代碼中進(jìn)行修改,并重新打包發(fā)布版本,很是麻煩,當(dāng)然這樣也是不可取的。
因此使用nginx反向代理WebSocket就可以解決這個問題。
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)境改變不改動代碼的情況下對WebSocket請求進(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)行的域名和端口號下發(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)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue SPA 初次進(jìn)入加載動畫實(shí)現(xiàn)代碼
今天小編就為大家分享一篇Vue SPA 初次進(jìn)入加載動畫實(shí)現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vuejs在解析時出現(xiàn)閃爍的原因及防止閃爍的方法
這篇文章主要介紹了vuejs在解析時出現(xiàn)閃爍的原因及防止閃爍的方法,本文介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧2016-09-09
vue2.0 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由守衛(wèi))
vue-route 提供的 beforeRouteUpdate 可以方便地實(shí)現(xiàn)導(dǎo)航守衛(wèi)(navigation-guards)。這篇文章主要介紹了vue2.0 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由守衛(wèi))的相關(guān)知識,需要的朋友可以參考下2018-05-05
uni-app中vue3表單校驗(yàn)失敗的問題及解決方法
最近遇到這樣的問題在app中使用uni-forms表單,并添加校驗(yàn)規(guī)則,問題是即使輸入內(nèi)容,表單校驗(yàn)依然失敗,本文給大家分享uni-app中vue3表單校驗(yàn)失敗的問題及解決方法,感興趣的朋友一起看看吧2023-12-12
Vue3中reactive丟失響應(yīng)式的問題解決(避大坑!)
這篇文章主要給大家介紹了關(guān)于Vue3中reactive丟失響應(yīng)式的問題解決,vue3中reactive定義的引用類型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式 ,需要的朋友可以參考下2023-07-07
vue使用vue-video-player無法播放本地視頻的問題及解決
這篇文章主要介紹了vue使用vue-video-player無法播放本地視頻的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
客戶端(vue框架)與服務(wù)器(koa框架)通信及服務(wù)器跨域配置詳解
本篇文章主要介紹了客戶端(vue框架)與服務(wù)器(koa框架)通信及服務(wù)器跨域配置詳解,具有一定的參考價值,有興趣的可以了解一下2017-08-08

