簡體   English   中英

Websocket返回200而不是Apache Server的101

[英]Websocket returns 200 instead of 101 by Apache Server

我正在嘗試使用mod_proxy和mod_proxy_wstunnel模塊將流量從Apache重定向到CentOs服務器上的Tomcat。 HTTP流量可以順利重定向,但是到目前為止,我無法使用任何配置成功重定向Websocket流量。 它給我200個響應代碼,而不是101個。

我已經閱讀了很多類似的問題,但是還沒有找到任何解決方案。 這些有類似的問題。 問題1問題2

我正在使用Apache Server 2.4.6-> Apache Tomcat 7.0.92->具有Spring和javax套接字實現的Java應用程序。

這是我的模塊:

在此處輸入圖片說明

這是我的httpd配置:

<VirtualHost *:80>
    ServerName domain.com
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"$
    CustomLog /var/log/httpd/log_access.log combined
    ErrorLog /var/log/httpd/log_error.log

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On
    <Proxy *>
       Require all granted
    </Proxy>

    RewriteEngine On

    #RewriteCond %{HTTP:Connection} Upgrade [NC]
    #RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
    RewriteRule /app-api/chat/user/(.*)   ws://127.0.0.1:8080/app-api/chat/user/$1   [P,L]

    ProxyPass /app-api http://127.0.0.1:8080/ retry=1 acquire=3000
    ProxyPassReverse /app-api http://127.0.0.1:8080/
    DocumentRoot /var/www/html

如果我直接在本地計算機上使用connect to Apache Tomcat-一切都很好,它將返回101,但不在遠程。

這是遠程CentOs機器。它給出了200。

為什么我得到200條回復? 這個配置有什么問題?

我已經嘗試了很多實現,但是仍然可以從服務器獲得200響應,而不是升級到101。

最后,我做到了。

就我而言,無需放置RewriteConds和RewriteRules。 所需要的只是通過添加到httpd.conf中來將請求代理到實際后端(Apache Tomcat)

 ProxyPass /api/chat/user/  ws://127.0.0.1:8080/chat/user/
 ProxyPassReverse /api/chat/user/ ws://127.0.0.1:8080/chat/user/

另外,必須啟用mod_proxy_wstunnel。

僅從官方文檔獲得此配置。 以防萬一: mod_proxy_wstunnel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM