Re: proxy pass и указание номера порта
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 4 23:00:50 UTC 2013
Hello!
On Thu, Jul 04, 2013 at 03:10:13AM -0400, Kibets Alexander wrote:
> Необходимо сделать проксирование WEB-Socket соединения
> ВЕБ-часть открывает 2-ва WEB-Socket соединения на
> http://mysite.com/ws_cmd
> http://mysite.com/ws_data
> по 80-му порту
>
> Они должны пробрасоватся на http://mysite.com:8000
>
> http
> {
> ....
>
> server
> {
> listen ***.***.***.***:80;
>
> # Отдаем статику
> location ^~ /gmap2/
> {
> root /home/www/sites/nodejs/data/;
> }
>
> # WEB-Socket
>
> location /
> {
> # Извлекаем номер порта
> rewrite ^/ws_cmd(/*/) /ws_cmd break;
> rewrite ^/ws_data(/*/) /ws_data break;
>
> set $port_num $1;
> # set $port_num 8000; так тоже не работает
> # set $port_num "8000"; так тоже не работает
>
> так работает
> proxy_pass http://mysite.com:8000;
> а так !!! НЕ РАБОТАЕТ !!!
> #proxy_pass http://mysite.com:$port_num;
>
> proxy_http_version 1.1;
> proxy_set_header Upgrade $http_upgrade;
> proxy_set_header Connection "upgrade";
> proxy_buffering off;
> }
>
> }
>
> }
>
> Я хочу в URL-е указывать номер порта на который должен пробрасоватся запрос
> (для распределения нагрузки).
> Помогите пожалуйста!
В чём заключается "не работает"?
Использование переменных в proxy_pass, помимо прочего, приводит к
тому, что nginx начинает пытаться в resolve'ить имя mysite.com, и
скорее всего в логах при вышеприведённом конфиге будет ругань про
то, что нужно указать resolver. Подробнее тут:
http://nginx.org/r/proxy_pass/ru
http://nginx.org/r/resolver/ru
А вообще - для распределения нагрузки лучше описать блок
upstream, подробнее тут:
http://nginx.org/r/upstream/ru
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru