I got a 500 error while trying to access ws: // localhost: 8080 / through my Apache2 server. This server runs OpenSuse Leap 42.1 and Apache 2.4.16.
These Apache2 modules are included: mod_proxy, mod_proxy_http, mod_proxy_wstunnel.
When the request is called from the local network, everything works fine. An example of the URL: http://<myhost-ip-address>/api/ws/<some-url>. It returns a status of 101 and answer Upgrade: websocket. This is normal.
Error of the same request from the external network. An example of the URL: ws://www.mysite.com/api/ws/<some-url>. It returns error 500.
The Apache Access Log contains: GET /api/ws/<some-url> HTTP/1.1" 500 ...
The Apache error log contains: [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.
My httpd.conf:
<VirtualHost *:80>
ServerName mysite.com
ServerAlias mysite.com
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]
ProxyPass /api/ws/ ws://localhost:8080/api/ws/
ProxyPassReverse /api/ws/ ws://localhost:8080/api/ws/
DocumentRoot /srv/www/vhosts/mysite.com
<Directory "/srv/www/vhosts/mysite.com">
Options Indexes SymLinksIfOwnerMatch
AllowOverride None
...
</Directory>
AllowEncodedSlashes NoDecode
StackOverflow ():
websockets, node.js, socket-io, .
- . ?
adona9, :
proxy_util.c(1784): AH00925: initializing worker ws://localhost:8080/api/ws/ shared
proxy_util.c(1826): AH00927: initializing worker ws://localhost:8080/api/ws/ local
...
mod_authz_core.c(809): AH01626: authorization result of Require user <user>: granted
mod_authz_core.c(809): AH01626: authorization result of <RequireAny>: granted
mod_charset_lite.c(219): AH01448: incomplete configuration: src unspecified, dst unspecified
mod_proxy.c(1159): AH01143: Running scheme ws handler (attempt 0)
mod_proxy_http.c(1944): AH01113: HTTP: declining URL ws://localhost:8080/api/ws/<some-url>
mod_proxy_wstunnel.c(341): AH02900: declining URL ws://localhost:8080/api/ws/<some-url> (not WebSocket)
[proxy:warn] H01144: 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.
?