将nginx用于具有两个不同主机/端口的websockets

时间:2013-11-27 09:27:34

标签: nginx playframework websocket

我的播放项目使用nonssl运行。所以我决定使用nginx作为SSL的前端代理服务器。现在,我已经部署了两个游戏项目。一个用于门户网站,一个用于休息应用程序。

在我的门户项目(前端UI)中,我调用了websocket urls访问rest-api项目以获取数据。

问题是我在使用SSL进行门户网站时遇到安全性错误。我需要了解如何通过websockets。这是我的nginx.conf

user  nginx;

worker_processes 1;

error_log /var/log/nginx/error.log debug; pid /var/run/nginx.pid;

活动{     worker_connections 1024; }

http {     包括/etc/nginx/mime.types;     default_type application / octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;

    #include /etc/nginx/conf.d/*.conf;
server {
listen       443 ssl;
server_name  10.100.10.99;

ssl on;
ssl_certificate /etc/ssl/certs/punvm-core06.crt;
ssl_certificate_key /etc/ssl/private/punvm-core06.key;
ssl_session_timeout 5m;
ssl_protocols  SSLv2 SSLv3 TLSv1;
ssl_ciphers  HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers   on;

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
proxy_pass       http://matrix09:9701; #portal url.
proxy_redirect   off;

   #WebSocket support (nginx 1.4)
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
proxy_set_header Host      $http_host;
proxy_read_timeout 86400;
}   

} }

在我的门户网站播放项目中,我的javascript调用了websocket。从nginx了解我只能给一个代理传递。 所以我有两套网址。 1. http://matrix09:9700 - My rest url . 2. http://matrix09:9701 _ my portal url

在java脚本中,我称之为websocket,

var WS_appstatus = window['MozWebSocket'] ? MozWebSocket : WebSocket
     var appstate=new WS_appstatus("ws://matrix09:9700/services/reports/v1/realtimestreaming/smpApplicationStatus")
         appstate.onmessage = function(event) {
         var datapoint = jQuery.parseJSON(event.data )
         app_status(datapoint);
}

PLease建议。

0 个答案:

没有答案