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ではありません
私は少なくとも短期的には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のデフォルト)。
NGINXモジュールでこれらすべてを行う方法を示すQ&A形式のガイドをまとめることができました;)
NGINXはプロキシWebSocketをリバースし、SSLを有効にします(wss://)?
NGINXを再構築し、上記の質問の構成に従う必要があります。