nginx代理websocket,ip+端口可以正常访问,使用域名连接时断开,报错

nginx代理websocket,ip+端口可以正常访问,但是使用域名时连接后会立马断开(报错:1006 false),其中nginx内应当增加的配置都增加了,还是不可以,请问是什么原因

location /api/{
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://10.96.163.90:1700/;    #后端项目接口地址
        proxy_http_version  1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_connect_timeout 600s; 
        proxy_read_timeout 600s; 
        proxy_send_timeout 600s; 
    }

怀疑是DNS配置有问题~

  • 看下这篇博客,也许你就懂了,链接:Nginx解决ip地址拦截问题,Nginx搭建部署,Nginx支持websocket,Nginx支持https
  • 除此之外, 这篇博客: Nginx代理Websocket端口配置中的 2、重启Nginx 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #Nginx相关命令
    systemctl stop nginx
    systemctl start nginx
    systemctl restart nginx
    
    #查看监听端口
    netstat -anp|grep 您的端口
    
  • 以下回答由chatgpt基于相关博客总结生成:

    针对此问题,首先需要确认nginx的相关配置是否正确。其次,需要根据错误信息对问题进行调试。

    对于websocket连接自动断开的问题,可能是由于nginx代理配置不正确导致的。正确的配置示例如下: 在http模块下添加如下配置:

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

    在server模块的location里添加以下配置:

    location / {
        proxy_pass http://your-backend-ip:your-backend-port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
    

    需要注意的是,your-backend-ipyour-backend-port需要替换为实际的后端IP和端口。

    1006错误通常表示连接关闭,原因是协议错误或者代理服务器意外关闭连接。如果配置正确而仍然出现该错误,则可能是后端程序问题,需要进一步排查后端程序的代码和配置。

    至于false错误,则需要具体分析报错的上下文,无法一概而论。

    总结:

    1.确认nginx代理配置是否正确,特别是关于websocket的配置。

    2.根据错误码和具体情况进行调试,排除掉后端程序等可能引起错误的因素。

    3.建议参考以上的springboot配置方法,获取websocket连接中的真实IP地址。