Nginx WebSocket Configuration

server {
    listen       80;
    server_name  bi.com;
    access_log  /var/log/nginx/bi.access.log  main;
    error_log  /var/log/nginx/bi.error.log  ;
    # web socket  location must be  / ,otherwise failed.
    location / {
        access_log /var/log/nginx/ws.access.log main;
        error_log /var/log/nginx/ws.err.log;
        proxy_pass http://ws;
        proxy_http_version 1.1;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection "upgrade";

    }

    location /bi/ {

        // app context path
        proxy_pass http://bi/;
    }
}

upstream bi {
    ip_hash;
    server 172.16.8.2:1904;

    server 172.16.8.3:1904;
}
upstream ws {
    ip_hash;
    server 172.16.8.16:1903;

    server 172.16.8.17:1093;
}

Note: If using htts or SSL, please use wss protocol instead of ws protocol.

The following is a complete configuration:

      proxy_pass http://backend/;
      proxy_redirect      off;
      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;

      # WebSocket specific
      proxy_http_version 1.1;
      proxy_set_header    Upgrade           $http_upgrade;
      proxy_set_header    Connection        "upgrade";

      #
      # Specific for comet or long running HTTP requests, don't buffer up the
      # response from origin servers but send them directly to the client.
      #
      proxy_buffering     off;

      #
      # Bump the timeout's so someting sensible so our connections don't
      # disconnect automatically. We've set it to 12 hours.
      #
      proxy_connect_timeout 43200000;
      proxy_read_timeout    43200000;
      proxy_send_timeout    43200000;

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324390221&siteId=291194637