14

WSSを介してサーバーに接続する際に問題が発生しました。次の記事に従って、WebSocketを使用してnginxをセットアップしました:http://www.letseehere.com/reverse-proxy-web-sockets

以下は、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ではアクセスできません。

4

2 に答える 2

6

NGINXモジュールでこれらすべてを行う方法を示すQ&A形式のガイドをまとめることができました。はるかに簡単です;)

NGINXはプロキシWebSocketをリバースし、SSL(wss://)を有効にしますか?

NGINXを再構築し、上記の質問の構成に従う必要があります。

于 2012-08-29T23:38:01.703 に答える
3

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

StunnelはHTTPSをHTTPに変換し、そのトークンによってWSSをWSに変換できます。Nginxは、通常どおり9000ポートで実行されているソケットアプリケーションを提供しました。

/etc/stunnel/stunnel.conf

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

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

#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;
#        }
#  }
#}

今私が心配する必要があるのは、nginxでWebSocketのタイムアウトを増やす方法だけです。接続は75秒ごとに切断されているようです(nginxのデフォルト)。

于 2012-05-01T06:44:19.003 に答える