2012-04-30 2 views
9

У меня возникла проблема при подключении через WSS к моему серверу. Я выполнил следующую статью, чтобы установить nginx с помощью websockets: http://www.letseehere.com/reverse-proxy-web-socketsКонфигурация Nginx для WSS

Ниже приведена моя конфигурация 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. 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, соединение, кажется, прерывается каждые 75 секунд (по умолчанию для nginx).

+0

Как решить эту проблему с таймаутом? Что-нибудь более элегантное больше, чем установка тайм-аута на огромное количество? –

3

я был в состоянии собрать руководство в Q & формате, который показывает вам, как сделать все это с помощью модулей Nginx, гораздо проще;)

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

Вам нужно будет восстановить NGINX и следуйте настройке в вопросе выше.

+0

Домен находится в автономном режиме. –

+0

Это stackoverflow.com, не уверен, что я понимаю проблему? – crockpotveggies

Смежные вопросы