jumpserver做nginx转发后提示:Connect websocket server error

本文介绍如何将Jumpserver的HTTP端口从默认的80更改为88,并通过Nginx进行代理转发。为避免WebSocket连接错误,需正确配置Nginx升级头。提供了详细的Nginx配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_15,color_FFFFFF,t_70,g_se,x_16

安装后jumpserver选择自定义端口,http 80端口改为88,再通过nginx转发记得都要设置 Nginx 的 Upgrade,否则会提示:Connect websocket server error

nginx配置如下:

1、编辑nginx.conf文件,http部分添加如下内容

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

2、域名配置文件增加

proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade";

##Jumpserver 
server {

    listen 80;
    server_name jump.xxx.com;  # 自行修改成你的域名

    client_max_body_size 4096m;  # 上传文件大小限制

    location / {
            # 这里的 ip 是后端 JumpServer nginx 的 ip
            proxy_pass http://192.168.244.144;
            proxy_buffering off;
            proxy_request_buffering off;
            proxy_http_version 1.1; 
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
    }
}

这样就不会提示错误

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

### Vue 中 AMQJS0007E Socket Error Undefined 的解决方案 AMQJS0007E 错误通常表示 WebSocket 或 MQTT 协议在尝试建立连接时发生了网络层错误。以下是针对此问题的分析和解决方法: #### 1. **检查 Nginx 配置** 如果后端使用的是 Nginx 来分发请求,则需要确认其配置是否支持 WebSocket 连接。Nginx 默认可能不会正确处理 WebSocket 请求,因此需要显式启用 WebSocket 支持。 以下是一个典型的 Nginx 配置示例: ```nginx server { listen 80; server_name your-domain.com; location /mqtt/ { proxy_pass http://localhost:9001; # 替换为实际的 MQTT Broker 地址 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } } ``` 上述配置确保了 WebSocket 握手能够正常完成[^1]。 #### 2. **验证前端 MQTT 客户端初始化参数** 在 Vue 项目中,MQTT 客户端的初始化参数非常重要。常见的问题是未指定正确的 URL 或协议类型(`ws://` 或 `wss://`)。以下是一个标准的客户端初始化代码片段: ```javascript import { mqtt } from 'vue-mqtt'; const options = { clientId: 'unique-client-id', // 设置唯一的 client ID clean: true, // 清理会话标志位 connectTimeout: 4000, // 超时时间设置 reconnectPeriod: 5000, // 自动重连间隔 }; // 初始化 MQTT 实例 export const mqttClient = new mqtt.Client('ws://your-broker-url/mqtt/', options); mqttClient.onConnect(() => console.log('Connected to MQTT broker')); mqttClient.onConnectionLost((responseObject) => { if (responseObject.errorCode !== 0) { console.log('Disconnected:', responseObject.errorMessage); } }); ``` 注意:URL 必须匹配后端的实际地址,并且路径部分应与 Nginx 配置一致。 #### 3. **排查 Vue-Socket.io 使用中的常见问题** 如果项目中还集成了 Vue-Socket.io 库来管理 WebSocket 连接,则需要注意安装和引入过程中可能出现的问题。例如,在某些情况下可能会遇到 `$socket` 属性无法定义的情况。这通常是由于版本不兼容或插件加载顺序不当引起的。 修复方式如下: - 手动编辑 `node_modules/vue-socket.io/dist/vue-socketio.js` 文件,找到并修改相关属性赋值逻辑[^3]。 - 如果不想修改第三方依赖文件,可以考虑升级到最新版 Vue-Socket.io 并重新构建项目。 另外,建议按照官方文档正确注册插件: ```javascript import VueSocketIO from 'vue-socket.io'; import io from 'socket.io-client'; Vue.use(new VueSocketIO({ debug: true, connection: io('http://your-server-address'), // 替换为目标服务器地址 })); ``` #### 4. **调试工具的应用** 为了进一步定位问题根源,推荐使用浏览器开发者工具查看 Network 面板下的 WebSocket 流量。通过观察握手阶段的状态码以及后续消息传输情况,可以快速判断是否存在跨域或其他通信障碍。 --- ### 总结 以上是从多个角度出发对 AMQJS0007E 错误的全面解析及对应措施。具体实施时需结合实际情况逐一测试每一步骤的效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗草丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值