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

在本地服务器可以正常连接

放到生产环境后连接失败

解决方法:添加websocket代理配置

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

nginx.conf完整配置

txt 复制代码
#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

相关推荐
xUxIAOrUIII10 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home10 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
JIngJaneIL11 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
全靠bug跑12 小时前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
Evan芙12 小时前
搭建nexus服务,实现本地仓库、代理仓库
java·nginx·tomcat
北城以北888813 小时前
Spring定时任务与Spring MVC拦截器
spring boot·spring·mvc
缘不易13 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Mr.朱鹏13 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
秋田君14 小时前
前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案
前端·windows·nginx
白宇横流学长14 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端