Показать сообщение отдельно
  #1 (permalink)  
Старый 18.09.2015, 19:36
Интересующийся
Отправить личное сообщение для faecker Посмотреть профиль Найти все сообщения от faecker
 
Регистрация: 05.05.2014
Сообщений: 16

Websocket через nginx как прокси
Сайт одностраничный. Весь контент подгружается аяксом.
Вебсокет соединение (для чатов) устанавливается кодом на странице при первоначальной загрузке страницы:

var ws = new SockJS('http://' + window.location.hostname + ':12345/chat');

Используется библиотека sock.js
Так все работает.

Мне надо сделать, чтобы websocket проксировался через nginx.
В конфиге nginx написано:

location / {
  		if (!-f $request_filename) {
    		rewrite ^/(.*)$ /index.php?route=$1 last;
        	break;
		}
		
		#proxy_pass [url]http://localhost:12345/chat;[/url]
		#proxy_http_version 1.1;
		#proxy_set_header Upgrade $http_upgrade;
		#proxy_set_header Connection "upgrade";	
  	}


Эти две части между собой конфликтуют. Если закомментировать верхнюю и расскомментировать вторую - то будет вебсокет соединение, но не грузится сама страница. Если наоборот, то грузится страница, но нет вебсокет соединения с ошибкой WebSocket handshake: Unexpected response code: 200
Если расскоментировать обе, то вообще ничего не работает.

Что делать?
Это все - проксирование - нужно, чтобы не было возможности обращения к вебсокету с других сайтов или ресурсов.
Я вообще в ту сторону копаю??
Поясните, кто знает.
Ответить с цитированием