Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

nginx 1.3.13+ reverse proxy voor websockets icm thin server

Pagina: 1
Acties:

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 23-10 08:50
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:
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


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik vul de topictitel een beetje aan. Heb nooit iets met nginx gedaan dus kan daar niet mee helpen :+

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 23-10 08:50
Ik vrees dat weinig kunnen helpen :P
Op google is er al bar weinig over te vinden :(

Let op: Mijn post bevat meningen, aannames of onwaarheden


  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 23-10 08:50
anyone?

Let op: Mijn post bevat meningen, aannames of onwaarheden


  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 23-10 08:50
Dafuq zeg, ik heb het eindelijk gevonden!

Hou je vast, hier komt de epische fix waar ik al bijna een week voor zocht.

Ben je er klaar voor?

Hier komt-ie:
Upgrade ipv upgrade

Een fucking HOOFDLETTER gebruiken en mijn probleem was opgelost. CAPS ARE ALWAYS THE ANSWER.

*nerdrage*

[ Voor 3% gewijzigd door Gamebuster op 13-04-2013 22:04 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

:X

Thanks @update.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Pagina: 1