web-dev-qa-db-ja.com

wsプロトコルとApache mod_proxy_wstunnel構成:エラー500

Apache2サーバー経由でws:// localhost:8080 /にアクセスしようとすると、エラー500が発生しました。このサーバーは、OpenSuse Leap 42.1およびApache 2.4.16を実行します。

これらのApache2モジュールが有効になっています:mod_proxy、mod_proxy_http、mod_proxy_wstunnel。

ローカルネットワークからリクエストが呼び出されると、すべてが正常に動作します。 URLの例:http://<myhost-ip-address>/api/ws/<some-url>。ステータス101と応答Upgrade: websocketを返します。大丈夫です。

外部ネットワークからの同じ種類の要求は失敗します。 URLの例:ws://www.mysite.com/api/ws/<some-url>。エラー500を返します。

Apacheアクセスログには以下が含まれます:GET /api/ws/<some-url> HTTP/1.1" 500 ...

Apacheエラーログには以下が含まれます:[proxy:warn] AH01144: No protocol handler was valid for the URL /api/ws/<some-url>. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

私のhttpd.conf:

<VirtualHost *:80>
ServerName mysite.com
ServerAlias mysite.com
# Redirection for ws protocol
ProxyPreserveHost On
ProxyVia full
ProxyRequests OffHere
RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/api/ws/(.*)           [NC]
RewriteCond %{QUERY_STRING} transport=websocket     [NC]
RewriteRule /(.*)           ws://localhost:8080/$1  [P,L]
# Proxy pass
ProxyPass           /api/ws/            ws://localhost:8080/api/ws/
ProxyPassReverse    /api/ws/            ws://localhost:8080/api/ws/
# DocumentRoot
DocumentRoot /srv/www/vhosts/mysite.com
<Directory "/srv/www/vhosts/mysite.com">
    Options Indexes SymLinksIfOwnerMatch
    AllowOverride None
    ...
</Directory>
# URL as parameter
AllowEncodedSlashes NoDecode

私はこれらの以前の回答に従いました(そのおかげで): websocketsnode.jssocket-io 、しかし運がありませんでした。

私の設定で何かが間違っているに違いありません。何か案は?

6
jack-y

Websocketサポートに必要なmod_proxy_wstunnelモジュールがないようです。

それはあなたのhttpd.confで以下のように有効にする必要があります

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

モジュールをインストールすると、正常に動作するはずです。

2