WebsocketをSSL対応するのにハマったバカモノの話

ハマったバカモノは私です。

いざVPSを借りまして、HTTPSでWebsocketを動かしたい!

ローカルで ws:// スキームなら動くのにSSLに対応する為、wss:// にすると動かない現象に見舞われました。

Apacheのリバーシプロキシで一応動きました。

LoadModule proxy_module lib64/httpd/modules/mod_proxy.so
LoadModule proxy_ftp_module lib64/httpd/modules/mod_proxy_ftp.so
LoadModule proxy_http_module lib64/httpd/modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module lib64/httpd/modules/mod_proxy_wstunnel.so
LoadModule proxy_ajp_module lib64/httpd/modules/mod_proxy_ajp.so
LoadModule headers_module lib64/httpd/modules/mod_headers.so

ProxyPass /wss ws://dmain-name:PORT/wss
ProxyPassReverse /wss ws://dmain-name:PORT/wss

多分いらないLoadModuleもありそうな気がしますが、、、

 

すっごい恥ずかしい勘違いをしてたのかもしれません。

バックエンドサーバーを動かすURLは

https://dmain-name:PORT/wss

http://dmain-name:PORT/wss

のどちらでもないって話でした。

ハンドシェイクするサーバーのURLはProxyPassの/wssフォルダとは関係ない所で実行すれば良かったというオチでした。

PORTの能力を分かっていなかったです。

まじでサーバーって難しいです。

 

またPHPでソケット通信を扱うには下記のモジュールが必要の様です。

//ソケット通信に必要
extension = php_sockets.dll

//直接関係ないけど、個人的に入れてる設定
extension = php_openssl.dll
extension = php_mbstring.dll
default_charset = UTF-8
date.timezone=Asia/Tokyo

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です