springboot项目使用websocket功能,使用了nginx反向代理后连接失败问题解决

在本地服务器可以正常连接
在这里插入图片描述
放到生产环境后连接失败
在这里插入图片描述
解决方法:添加websocket代理配置

proxy_http_version 1.1; # 必须使用HTTP/1.1
proxy_set_header Upgrade $http_upgrade; # 传递Upgrade头
proxy_set_header Connection "upgrade"; # 将Connection头设置为"upgrade"

nginx.conf完整配置


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.mytest.com;

        # 将所有的HTTP请求重定向到HTTPS
        return 301 https://$server_name$request_uri;
    }

    # HTTPS server
    server {
        listen       443 ssl;
        server_name  www.mytest.com;

        ssl_certificate      D:/nginx-1.26.3/ssl/www.mytest.com.crt;
        ssl_certificate_key  D:/nginx-1.26.3/ssl/www.mytest.com.key;

        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /api/ {
            # 指定要代理到的目标服务器地址
            proxy_pass http://192.168.1.22:8080/;

            # 以下是WebSocket代理的核心配置
            proxy_http_version 1.1; # 必须使用HTTP/1.1
            proxy_set_header Upgrade $http_upgrade; # 传递Upgrade头
            proxy_set_header Connection "upgrade"; # 将Connection头设置为"upgrade"
            
            # 标准代理头(同样重要)
            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_set_header X-Forwarded-Proto $scheme; # 告诉后端这是HTTPS请求

            # 建议增加超时时间,因为WebSocket是长连接
            proxy_read_timeout 3600s; # 1小时
            proxy_send_timeout 3600s;
            proxy_connect_timeout 30s;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

如果是http写使用wx://www.xxx.com,https协议使用wss://www.xxx.com

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值