new WebSocket("ws://example.com:1337");のようにポート番号を指定しますが、これを消したいなーと。
Ratchetドキュメント http://socketo.me/docs/deploy にはHAProxyの記載がありますが、NginxのWebSocket Proxyでやってみました。尚、使用したNginxは最新の1.3.16です。
1. Apacheのポートを変更
* Nginxにポート80を使用させたいので、Apacheのポートを変更します。
http://madroom-project.blogspot.jp/2013/04/ubuntuapache.html
* 併せて、ApacheへのアクセスをNginxからのみに制限するには /etc/apache2/sites-available/default でドキュメントルートに対して"allow from all"を"allow from 127.0.0.1"にします。
2. Nginxのインストール
* 最新バージョンが欲しいので、ソースからインストールします。
$ wget http://nginx.org/download/nginx-1.3.16.tar.gz $ tar xzvf nginx-1.3.16.tar.gz $ cd nginx-1.3.16/ $ ./configure $ make $ sudo paco -D make install $ nginx -v nginx version: nginx/1.3.163. /usr/local/nginx/conf/nginx.conf を編集
* とりあえず http://nginx.org/en/docs/http/websocket.html を参考にしました。
* "location /"は、全てApacheに向けます。
* 以下、Ratchetのポートを1337、Apacheのポートを8000とします。
$ diff /usr/local/nginx/conf/nginx.conf.default /usr/local/nginx/conf/nginx.conf 42a43,49 > location /socket/ { > proxy_pass http://127.0.0.1:1337; > proxy_http_version 1.1; > proxy_set_header Upgrade $http_upgrade; > proxy_set_header Connection "upgrade"; > } > 43a51,52 > proxy_pass http://127.0.0.1:8000; >4. Nginxを起動
$ sudo nginx # 停止は以下 $ sudo nginx -s stop無事、JSで以下の形で接続出来ました。
new WebSocket("ws://example.com/socket/");その他、設定すべき項目は有るのかもしれませんが、とりあえず、最小限の手順はこんな感じなのかなと。
(タイトルにFuelPHPとつけたけど全然関係なかったな。。。)
関連:
FuelPHPでWebSocketを扱うパッケージを作りました
http://madroom-project.blogspot.jp/2013/04/fuelphpwebsocket.html
No comments:
Post a Comment