Ik heb een rails app met een chat.
Deze chat maakt gebruik van websockets via de websocket-rails gem.
De rails app draai ik in een thin server achter een nginx reverse proxy.
Ik krijg echter de websocket support van nginx (die er sinds 1.3.13 in schijnt te zitten) niet aan de praat. Ik heb al een hoop gegoogled, maar eigenlijk krijg je vrijwel altijd hetzelfde antwoord en hetzelfde voorbeeld van de nginx documententatie.
Aangezien ik vrijwel 1:1 het voorbeeld van nginx doc gebruik, snap ik niet waarom het niet werkt.
Zie: http://trac.nginx.org/nginx/changeset/5073/nginx
De pagina met de chat:
http://test.ravecy.com/users/auth/facebook en na inloggen klikken op "Chat" in het menu.
Zonder login vliegen er errors die je als gebruiker niet te zien krijgt. (wordt uiteraard nog gefixt)
Wat data:
nginx versie:
nginx config + site config
De site in sites-enabled is:
De thin config:
Diverse server logs, bij alleen het openen van de pagina met de chat:
Edit
Meer info, ik heb even ge-telnet:
Naar NGINX:
Direct naar Thin:
Overduidelijk gaat het fout hiero, maar waarom?
Deze chat maakt gebruik van websockets via de websocket-rails gem.
De rails app draai ik in een thin server achter een nginx reverse proxy.
Ik krijg echter de websocket support van nginx (die er sinds 1.3.13 in schijnt te zitten) niet aan de praat. Ik heb al een hoop gegoogled, maar eigenlijk krijg je vrijwel altijd hetzelfde antwoord en hetzelfde voorbeeld van de nginx documententatie.
Aangezien ik vrijwel 1:1 het voorbeeld van nginx doc gebruik, snap ik niet waarom het niet werkt.
Zie: http://trac.nginx.org/nginx/changeset/5073/nginx
De pagina met de chat:
http://test.ravecy.com/users/auth/facebook en na inloggen klikken op "Chat" in het menu.
Zonder login vliegen er errors die je als gebruiker niet te zien krijgt. (wordt uiteraard nog gefixt)
Wat data:
nginx versie:
code:
1
| nginx version: nginx/1.3.15 |
nginx config + site config
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
} |
De site in sites-enabled is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| upstream ravecy {
server localhost:3000;
server localhost:3001;
}
server {
listen 80;
server_name test.ravecy.com;
root /var/www/ravecy.com/public;
location /websocket {
proxy_pass http://ravecy;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect off;
}
location / {
try_files $uri @ravecy;
}
location @ravecy {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ravecy;
}
} |
De thin config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| --- chdir: /var/www/ravecy.com environment: production address: 127.0.0.1 port: 3000 timeout: 30 log: log/thin.log pid: tmp/pids/thin.pid max_conns: 1024 max_persistent_conns: 100 require: [] wait: 30 servers: 2 daemonize: true |
Diverse server logs, bij alleen het openen van de pagina met de chat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| ==> production.log <==
Started GET "/chat" for 82.170.121.62 at 2013-04-10 12:20:12 +0200
Processing by ApplicationController#chat as HTML
Rendered application/chat.html.erb within layouts/frontend (0.2ms)
Rendered layouts/frontend/_navbar.html.erb (6.3ms)
Rendered layouts/shared/_alert.html.erb (0.0ms)
Rendered layouts/frontend/_facebook_sdk.html.erb (0.0ms)
Completed 200 OK in 9ms (Views: 8.4ms | ActiveRecord: 0.4ms)
Started GET "/websocket" for 82.170.121.62 at 2013-04-10 12:20:12 +0200
==> websocket_rails.log <==
I [2013-04-10 12:20:12.744] [ConnectionManager] Connection opened: #<Connnection::47398780>
I [2013-04-10 12:20:12.745] [Dispatcher] Started Event: client_connected
I [2013-04-10 12:20:12.745] [Dispatcher] Name: client_connected
I [2013-04-10 12:20:12.745] [Dispatcher] Data: {"connection_id"=>47398780}
I [2013-04-10 12:20:12.745] [Dispatcher] Connection: #<Connnection::47398780>
I [2013-04-10 12:20:12.747] [Dispatcher] Event client_connected Finished in 0.001960819 seconds
==> /var/log/nginx/access.log <==
82.170.121.62 - - [10/Apr/2013:12:20:12 +0200] "GET /chat HTTP/1.1" 200 854 "http://test.ravecy.com/posts" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17"
82.170.121.62 - - [10/Apr/2013:12:20:12 +0200] "GET /assets/frontend-6ad91089203a6026624ce015c2800492.css HTTP/1.1" 304 0 "http://test.ravecy.com/chat" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17"
82.170.121.62 - - [10/Apr/2013:12:20:12 +0200] "GET /assets/frontend-98fa493fc9f482c0d44b31bda5a89135.js HTTP/1.1" 304 0 "http://test.ravecy.com/chat" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17"
==> websocket_rails.log <==
I [2013-04-10 12:20:12.832] [ConnectionManager] Connection closed: #<Connnection::47398780>
I [2013-04-10 12:20:12.832] [Dispatcher] Started Event: client_disconnected
I [2013-04-10 12:20:12.832] [Dispatcher] Name: client_disconnected
I [2013-04-10 12:20:12.832] [Dispatcher] Data: nil
I [2013-04-10 12:20:12.832] [Dispatcher] Connection: #<Connnection::47398780>
I [2013-04-10 12:20:12.833] [Dispatcher] Event client_disconnected Finished in 0.000293462 seconds
==> /var/log/nginx/access.log <==
82.170.121.62 - - [10/Apr/2013:12:20:12 +0200] "GET /websocket HTTP/1.1" 200 398 "-" "-" |
Edit
Meer info, ik heb even ge-telnet:
Naar NGINX:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| GET /websocket HTTP/1.1
Host: test.ravecy.com
Connection: Upgrade
Upgrade: WebSocket
HTTP/1.1 200 OK
Server: nginx/1.3.15
Date: Sat, 13 Apr 2013 19:50:35 GMT
Content-Type: text/json
Transfer-Encoding: chunked
Connection: keep-alive
152
[["client_connected",{"id":null,"channel":null,"data":{"connection_id":37160040},"success":null,"result":null,"server_token":null}]][["users",{"id":null,"channel":null,"data":[],"success":null,"result":null,"server_token":null}]][["client_connected",{"id":null,"channel":null,"data":{},"success":false,"result":null,"server_token":null}]] |
Direct naar Thin:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| GET /websocket HTTP/1.1
Host: test.ravecy.com
Connection: Upgrade
Upgrade: WebSocket
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin:
WebSocket-Location: ws://test.ravecy.com/websocket
[["client_connected",{"id":null,"channel":null,"data":{"connection_id":37489460},"success":null,"result":null,"server_token":null}]][["users",{"id":null,"channel":null,"data":[],"success":null,"result":null,"server_token":null}]][["client_connected",{"id":null,"channel":null,"data":{},"success":false,"result":null,"server_token":null}]] |
Overduidelijk gaat het fout hiero, maar waarom?
[ Voor 15% gewijzigd door Gamebuster op 13-04-2013 21:57 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden