2012-04-30 10 views
9

WSSを介してサーバーに接続する際に問題が発生します。私はwebsocketsでnginxを設定するために次の記事をたどった:http://www.letseehere.com/reverse-proxy-web-socketsNginx config for WSS

以下は、Playを提供する私のnginxの設定です!アプリケーション:

#user nobody; 
worker_processes 1; 

error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

tcp { 

    upstream websockets { 
     ## Play! WS location 
     server 127.0.0.1:9000; 
    }  

    server { 
     listen 80; 
     listen 8000; 
     server_name socket.domain.com; 

     tcp_nodelay on; 
     proxy_pass websockets; 
     proxy_send_timeout 300; 
    } 

    # virtual hosting 
    #include /usr/local/nginx/vhosts/*; 
} 

http { 

    server { 
     listen 443 ssl; 
     server_name socket.artoo.in; 

     ssl_certificate  /usr/local/nginx/key/socket.domain.com.crt; 
     ssl_certificate_key /usr/local/nginx/key/socket.domain.com.key; 

     ssl_session_timeout 5m; 

     ssl_protocols SSLv2 SSLv3 TLSv1; 
     ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
     ssl_prefer_server_ciphers on; 

     location/{ 
      proxy_pass http://127.0.0.1:9000; 
     } 
    } 
} 

サーバがhttp://socket.domain.com上でアクセス可能ですが、https://socket.domain.com、WS://socket.domain.comが、WSSない://socket.domain.com

答えて

3

私は、少なくともためにそれを解決しました短期的にはstunnelを使用します(この記事を参照する:http://www.darkcoding.net/software/proxy-socket-io-and-nginx-on-the-same-port-over-ssl/)。

StunnelはHTTPSをHTTPに変換し、そのトークンWSSをWSに変換できます。

#user nobody; 
worker_processes 1; 

error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

tcp { 

    upstream websockets { 
     ## Play! WS location 
     server 127.0.0.1:9000; 
     check interval=3000 rise=2 fall=5 timeout=1000; 
    }  

    server { 
     listen 80; 
     listen 8000; 
     server_name socket.artoo.in; 

     tcp_nodelay on; 
     proxy_pass websockets; 
     proxy_send_timeout 300; 

    } 

    # virtual hosting 
    #include /usr/local/nginx/vhosts/*; 
} 

#http { 
# 
# server { 
#  listen 443 ssl; 
#  server_name socket.artoo.in; 
# 
#  ssl_certificate  /usr/local/nginx/key/socket.domain.com.crt; 
#  ssl_certificate_key /usr/local/nginx/key/socket.domain.com.key; 
# 
#  ssl_session_timeout 5m; 
# 
#  ssl_protocols SSLv2 SSLv3 TLSv1; 
#  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
#  ssl_prefer_server_ciphers on; 
# 
#  location/{ 
#   proxy_pass http://127.0.0.1:9000; 
#  } 
# } 
#} 

/usr/local/nginx/conf/nginx.conf

[https] 
accept = 443 
connect = 80 
TIMEOUTclose = 0 

/etc/stunnel/stunnel.conf

:nginxのは、いつものように9000ポートで実行されているソケットアプリケーションを提供しました今私が心配する必要があるのは、nginx上のWebソケットのタイムアウトを増やす方法です。接続は75秒ごとに破損しているようです(nginxのデフォルト)。

+0

このタイムアウトの問題を解決するにはどうすればよいですか?タイムアウトを膨大な数に設定するよりもエレガントなものは何ですか? –

3

私は、はるかに簡単にQ &内のガイドに合わせてnginxのモジュールでこのすべてを行う方法を示しますフォーマットを置くことができました。あなたはnginxのを再構築する必要があります

NGINX to reverse proxy websockets AND enable SSL (wss://)?

)と上記の質問の設定に従ってください。

+0

ドメインはオフラインです。 –

+0

それは私が問題を理解するかどうかわからない、stackoverflow.comですか? – crockpotveggies