nginx配置支持webSocket ws请求

nginx配置支持webSocket ws请求

服务端webSocket的java配置文件:

@Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        //允许使用socketJs方式访问,访问点为webSocket,允许跨域
        //在网页上我们就可以通过这个链接
        //ws://127.0.0.1:8585/webSocket来和服务器的WebSocket连接
        registry.addEndpoint("/webSocket").setAllowedOrigins("*");
    }

本地开发时,测试webSocket链接时,直接用的请求为:ws://127.0.0.1:8585/webSocket,其中webSocket为服务端的自己配置的访问点,访问成功,如下图:

当部署到使用nginx转发的生产环境时,nginx配置:

location /api/ {
    rewrite ^/api/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:8585;
    ...
}

当前访问的请求为:ws://域名:2222/api/webSocket,访问失败,如下图:

此时,需要nginx配置支持websocket协议ws://,正确的nginx配置为:

location /api/ {
    rewrite ^/api/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:8585;
    ...
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

访问成功:

原文地址: https://www.cnblogs.com/zys-blog/p/12035481.html

Comments are closed.