代码之家  ›  专栏  ›  技术社区  ›  Beto Neto

Apache2反向代理和WebSock

  •  0
  • Beto Neto  · 技术社区  · 4 年前

    <Location "/monitor">
            ProxyPreserveHost On
            RequestHeader set X-Forwarded-Proto https
            RequestHeader set X-Forwarded-Port 443
    
            RewriteEngine On
            RewriteCond %{REQUEST_URI}  ^/monitor/notify       [NC]
            RewriteCond %{QUERY_STRING} transport=websocket    [NC]
            RewriteRule ^/monitor/notify/(.*) wss://localhost:8001/monitor/notify/$1         [P,L]
    
            ProxyPass http://localhost:8001/monitor
            ProxyPassReverse http://localhost:8001/monitor
    </Location>
    

    但我得到了一个错误:

    VM690:149 WebSocket connection to 'wss://MY.HOST/monitor/notify/516/q7pqnqdz/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400

    0 回复  |  直到 4 年前
        1
  •  0
  •   Beto Neto    4 年前

    解决方法如下:

    RewriteEngine On
    RewriteCond %{HTTP:Connection} Upgrade [NC]
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteRule /monitor/(.*) ws://127.0.0.1:8001/monitor/$1  [P,L]