做websocket访问不成功

主要做了以下几点
1.网站配置
location /wx_user {
proxy_pass http://127.0.0.1:8189;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 60s;
proxy_connect_timeout 60s;
}
2.运行环境-守护进程,
网站目录 正常启动没有报错
3.运行环境-端口配置
8189到8189 端口外部访问
4.终端访问
终端访问telnet 127.0.0.1 8189
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.

HTTP/1.0 400 Bad Request
Server: workerman

400 Bad Request


workerman
Connection closed by foreign host. 应当是正常的 5.网站错误日志 *4981 upstream prematurely closed connection while reading response header from upstream, client: 101.31.43.42, server: guang.weibuyun.com, request: "GET /wx_user/ HTTP/1.1", upstream:

终端连接提示
ConnectFailed: Error: Server responded with a non-101 status: 502 Bad Gateway
Response Headers Follow:
server: openresty
date: Fri, 05 Jun 2026 07:52:30 GMT
content-type: text/html
content-length: 154
connection: keep-alive

应当是到openresty的转发了,但是下一步不正常

后端是什么?

后端是 Workerman

我另一个环境配置的一样就没有这问题,这个就不行,都比对了,实现找不出来原因

curl -i -N \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
  http://127.0.0.1:8189/wx_user/
curl -i -N \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" \
  -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
  http://127.0.0.1:8189/

分别试一下这两个

curl: (52) Empty reply from server

curl -i -N
-H “Connection: Upgrade”
-H “Upgrade: websocket”
-H “Sec-WebSocket-Version: 13”
-H “Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==”
http://127.0.0.1:8189/
curl: (52) Empty reply from server

你 Workerman 有问题 排查一下吧
是用 websocket://0.0.0.0:8189 这种方式启动的吗

是的,其他都是这样的就正常

正常启动的界面
Workerman[artisan] received signal SIGTERM
Workerman[artisan] stopping
Workerman[artisan] has been stopped
Workerman[artisan] start in DEBUG mode
----------------------------------------------- WORKERMAN -----------------------------------------------
Workerman/5.1.3 PHP/8.5.0 (JIT off) Linux/6.8.0-124-generic
------------------------------------------------ WORKERS ------------------------------------------------
event-loop proto user worker listen count state
select tcp www-data WxUser websocket://0.0.0.0:8189 1 [OK]

Press Ctrl+C to stop. Start success.

在守护进程中启动和终端里面启动都是这样

容器中启动的吗 容器中启动的需要映射端口

容器端口映射了内外一样,运行环境 php -端口配置
8189到8189 端口外部访问

CONTAINER_NAME=“php85”
CONTAINER_PACKAGE_URL=“https://mirrors.ustc.edu.cn
CONTAINER_PORT_0=8188
CONTAINER_PORT_1=8088
CONTAINER_PORT_2=8585
CONTAINER_PORT_3=8189
HOST_IP_0=“”
HOST_IP_1=“”
HOST_IP_2=“127.0.0.1”
HOST_IP_3=“”
HOST_PORT_0=8188
HOST_PORT_1=8088
HOST_PORT_2=8585
HOST_PORT_3=8189
IMAGE_NAME=“1panel-php-fpm:8.5.0”
PANEL_APP_PORT_HTTP=9005
PANEL_WEBSITE_DIR=“/opt/1panel/www”
PHP_EXTENSIONS=“redis,opcache,mcrypt,pdo_mysql,gd,curl,imagick,exif,zip,bcmath,pcntl”
PHP_VERSION=“8.5.0”
TZ=“Asia/Shanghai”

进容器内部执行刚才的 curl 命令

一样的
www-data@95c6e9b31b6a:/www$ curl -i -N
-H “Connection: Upgrade”
-H “Upgrade: websocket”
-H “Sec-WebSocket-Version: 13”
-H “Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==”
http://127.0.0.1:8189/wx_user/
curl: (52) Empty reply from server
www-data@95c6e9b31b6a:/www$ curl -i -N
-H “Connection: Upgrade”
-H “Upgrade: websocket”
-H “Sec-WebSocket-Version: 13”
-H “Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==”
http://127.0.0.1:8189/
curl: (52) Empty reply from server
www-data@95c6e9b31b6a:/www$

服务没起来

进程守护里 显示正常啊 已启动
我在环境终端里面也正常