рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдиреЗрдЧрдиреЗрдХреНрд╕ рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдпрд╛ рдлреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдирдЧрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдиреЗрдЬреЗрдиреНрдХреНрд╕ рдореЗрдВ рд╡реЗрдмрд╕рдХреЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ - рд╡реЗрдмрд╕реИрдЯ HTTP 1.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдХреЗрд╡рд▓ HTTP 1.0 рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд░реЗрдВ?


рдЖрдк рдмрд╛рдИрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдкреНрд░реЙрдХреНрд╕реА tcp рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП HAProxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдорддрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдЪреА рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕рд┐рдорд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдПрдХ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рдХрд┐ nginx рдореЗрдВ tcp_proxy рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ tcp рдХрдиреЗрдХреНрд╢рди (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд╣реА рдЬреЛ HAProxy рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛ред

Tcp_proxy рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде nginx рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛


... рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

export NGINX_VERSION=1.0.4
curl -O nginx.org/download/nginx-$NGINX_VERSION.tar.gz
git clone github.com/yaoweibin/nginx_tcp_proxy_module.git
tar -xvzf nginx-$NGINX_VERSION.tar.gz
cd nginx-$NGINX_VERSION
patch -p1 < ../nginx_tcp_proxy_module/tcp.patch
./configure --add-module=../nginx_tcp_proxy_module/
sudo make && make install


рдХреЛрдб рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕реНрдерд╛рдкрд┐рдд рдЯреВрд▓ рдмрдирд╛рдП рд╣реИрдВ рдФрд░ рд╕рднреА рдирдЧреЗрдВрдХреНрд╕ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

sudo apt-get install curl build-essential git-core
sudo apt-get build-dep nginx


рдореИрдВ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ ubuntu- рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓, рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирдЧрдиреЗрдХреНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ-рдЗрди рдХрд░реЗрдВ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдФрд░ рд▓реЙрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк рднреА рдЬреЛрдбрд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреВ рдФрд░ рдП рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдкреНрд░реЙрдХреНрд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рдЖрдЗрдП рдЙрд╕ рдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг vhost рдмрдирд╛рдПрдВ рдЬрдм рд╣рдо рдкреЛрд░реНрдЯ рдмреИрдХ рдХреЗ рд▓рд┐рдП 80, рдкреЛрд░реНрдЯреНрд╕ 8001, 8002, 8003, 8004 рдХреЛ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде faye рдпрд╛ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдиреЛрдбред рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рд╣реИрдВ)ред

рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ 9000 рдкреЛрд░реНрдЯ рдкрд░, рд╣рдо рдкреНрд░реЙрдХреНрд╕реА рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

tcp {
upstream websockets {
## node processes
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
server 127.0.0.1:8004;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 0.0.0.0:80;
server_name ;
tcp_nodelay on;
proxy_pass websockets;
}
}

http {
## status check page for websockets
server {
listen 9000;

location /websocket_status {
check_status;
}
}
}


рдмреИрдХрдПрдВрдб рдЪрд▓рд╛рдХрд░, рд╣рдо рдПрдХ рдЖрдирдВрджрджрд╛рдпрдХ рддрд╕реНрд╡реАрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдХрдИ рдмреИрдХрдПрдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдмреИрдХрдПрдВрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░) рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╣реА рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред

рд╕реМрднрд╛рдЧреНрдп рд╣реИ

рдкреБрдирд╢реНрдЪред рдЬреЙрдирдерди рд▓реЗрдкрд░реНрдЯ рдХреЗ рдПрдХ рд▓реЗрдЦ рдкрд░ рдЖрдзрд╛рд░рд┐рдд

Source: https://habr.com/ru/post/In124089/


All Articles