á¡ááœááºážááœááºáááºáá±á«áºááŸá Nextcloud ááá¯á· proxy ááŒá±á¬ááºážááẠOpenLiteSpeed ââááᯠáááºááá¯á·áááºááŸááºááááºáááºážá
á¡á¶á·ááŒá áá¬áá±á¬ááºážáá¬á OpenLiteSpeed ââá¡ááœáẠHabré ááŸá¬ ááŸá¬ááœá±ááŸá¯á áá¬á០ááá±ážáá«áá°ážá LSWS ááẠááá·áºááá·áºáá»á±á¬ááºáááºáá±á¬ áááºáá¬áá¬ááŒá áºáá±á¬ááŒá±á¬áá·áº á€áááá¬ážááŸá¯ááᯠááŒááºááẠá¡áá»ááºá¡ááŒááºáá¯ááºáá±á¬ááºáá«áááºá áááºážá ááŒááºááŸá¯ááºážááŸáá·áº áááºážááŒá¬ážáá±á¬ áááºá á®áá¶ááá·áºááœá²áá±áž á¡ááºáá¬áá±á·á áºá¡ááœáẠáááºážááᯠááŸá áºáááºáá«áááºá
OpenLiteSpeed ââââá WordPress "accelerator" á¡ááŒá áºá¡áá»á±á¬áºááŒá¬ážáá¯á¶ážááŒá áºáá±á¬áºáááºážá ááá±á·áá±á¬ááºážáá«ážááœááºáááºážááá¯á¡áá¯á¶ážááŒá¯ááŸá¯á¡áááºážáááºááá¯ááŒááá«áááºá áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠááŒá±á¬ááºážááŒáẠááá±á¬ááºá á®áá±ážááŒááºáž (reverse proxy) áá¯ááá¯áááºá áá®á¡ááœáẠnginx ááᯠáá¯á¶ážáá¬á ááá¯ááá¯á·áá»á¬ážáááºááá¯á· áááºážááŒá±á¬ááá¬ážá áá« ááá±á¬áá°áááá·áºáááºá áá«áá±ááá·áº LSWS ááᯠáá»á áºááááœá¬ážáá²á·á¡ááœáẠá¡áááºážáá¬áá»ááºááá«áááºá
Proxying á á¡áááºááŒá±áá«áááºá áá«áá±ááá·áº áááºááŸá¬áá²á á¡áááºáá°áá»áŸáá¡á¶á·ááŒááœááºáááºáá±á¬ááºááŸá¯ - Nextcloud á áá®ážááá·áº "ááá¯ááºáá»áŸáá±ááŒááºážááááºááá¯ááºáá»á¬áž" áááºáá®ážááẠNextcloud ááᯠá¡áá¯á¶ážááŒá¯áááºá áá±á¬ááºáááºáá
áºáŠážá
á®á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá®ážááŒá¬áž VM áá
áºáá¯ááᯠNextcloud ááŒáá·áº ááœá²áá±áá±ážáá¬ážááŒá®áž áááºážááá¯á·ááᯠâá¡ááŒááºáááºâ ááœáẠááá±á¬áºááŒááá¯áá«á áááºážá¡á
á¬ážá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááŒá±á¬ááºážááŒáẠproxy ááŸáááá·áº ááá±á¬ááºá
á® áá±á¬ááºážááá¯áá«áááºá á€ááŒá±ááŸááºážáá»ááºááẠááœáá·áºááŒá¯áááº-
1) á¡ááºáá¬áááºá០client data áá»á¬ážááááºážáááºážáá¬ážááá·áº server ááá¯áááºááŸá¬ážáá«á
2) ip-ááááºá
á¬áá»á¬ážááá¯ááááºážáááºážáá«á
áá¯á¶áááºá€áá¯á¶á á¶ááŸáá·áºáá°ááẠ-
á¡á á®á¡á á¥áºááᯠááá¯ážááŸááºážá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áºááŒá áºááŒá±á¬ááºáž ááŸááºážáá«áááºá áááºáááºáá±á¬ááºááŸá¯á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡ááœá²á·á¡á ááºážááẠááá±á·áá±á¬ááºážáá«ážá áá±á«ááºážá ááºááá¯ááºáá«á
á¡áá°ážáááŒáá·áº Habré ááœáẠá€á¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áº áááºáááºááá·áº á¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž ááŸááá±áá±á¬ááŒá±á¬áá·áº á€áá±á¬ááºážáá«ážááœááºáááºáž nextcloud á áááºáááºááŸá¯ááŸáá·áº á¡ááŒá±áá¶ááœá²á·á ááºážáá¯á¶ááᯠáá»ááºááŸááºáá¬ážáá«áááºá ááá¯á·áá±á¬áº Nextcloud ááá«áá² proxy áá áºáá¯áá±á¬ááºááœááºááœááºá¡áá¯ááºáá¯ááºáááºááá¯ááºááŒá±á¬ááºážáááºáááºáá»á¬ážááá¯áá»áœááºá¯ááºáá»áááºážáá±ááŒááá«áááºá
áá±ážáá¬ážáá±á¬:
Nextcloud ááᯠhost 1 ááœááºááá·áºááœááºážáá¬ážááŒá®áž http (SSL ááá«áá²) ááœááºá¡áá¯ááºáá¯ááºáááºá
á®á
ááºáá¬ážáá±á¬áá±ááá¶ááœááºáááºá¡ááºáá¬áá±á·á
áºááŸáá·áº "áá®ážááá¯ážáá±á¬ááº" IP ááááºá
ᬠ172.16.22.110 áá¬ááŸááááºá
host 2 ááœáẠOpenLiteSpeed ââááᯠááŒááºáááºáááºááŸááºááŒáá«á
áá¯á·á áááºážááœáẠá¡ááºáá¬áá±á·á
áºááŸá
áºáá¯á ááŒááºá (á¡ááºáá¬áááºááá¯ááŒáá·áºáááº) ááŸáá·áº ááœááºááẠ172.16.22.0/24 ááœáẠIP ááááºá
á¬áá
áºáá¯ááŸáá·áº á¡ááœááºážááá¯ááºážáá«ááŸááááºá
áááºáá¶áá° 2 á ááŒááºáá¡ááºáá¬áá±á·á
ẠIP ááááºá
á¬ááẠDNS á¡ááẠcloud.connect.link ááŒá
áºáááºá
á¡áá¯ááºáá
áºáá¯
ááá·áºááºááŸáááá·áº á¡ááºáá¬áááºá០ááá°áá«
- Ubuntu 18.04.2 ááœáẠOpenLiteSpeed ââááᯠááá·áºááœááºážááŒááºážá
ááá¯ááŸá±á¬ááºáááºážáá áºáᯠááá·áºááŒáá«á áá¯á·á
wget -O
http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
sudo apt-get update ááá¯
installá run:
sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl á áááºáá«á
- á¡áááºážáá¯á¶áž firewall á
áá
áºááá·áºááœááºážááŒááºážá
sudo ufw ssh ááœáá·áºááŒá¯áá«
sudo ufw default ááẠoutgoing ááœáá·áºááŒá¯áááºá
sudo ufw default ááẠincoming ááá¯ááŒááºážáááºáááºá
sudo ufw á http ááá¯ááœáá·áºááŒá¯áááº
sudo ufw ááœáá·áºááŒá¯áááºhttps
sudo ufw ááá± ááœáá·áºááŒá¯áá«áááºá áááºáá á®áá¶ááá·áºááœá²ááŸá¯á¡áááºááŸáẠáááºááá·áº port 7080 ááá¯á·áááá¯
sudo ufw enable - OpenLiteSpeed ââââááŒá±á¬ááºážááŒááºááá±á¬ááºá
á®á¡ááŒá
áºáááºááŸááºáá«á
virtualhost á¡á±á¬ááºááœáẠáááºážááœáŸááºáá»á¬áž áááºáá®ážááŒáá«á áá¯á·ácd /usr/local/lsws/
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {confáhtmlálogs}
sudo chown lsadm:lsadm ./conf/
LSWS áááºá¡ááºáá¬áá±á·á
áºá០virtual host ááᯠconfigure áá¯ááºááŒáá«á
áá¯á·á
url á
á®áá¶ááá·áºááœá²ááŸá¯ááá¯ááœáá·áºáá«á
áá°áááºážá¡áá±á¬áá·áºáááº/á
áá¬ážááŸááº- admin/123456
virtual host ááá¯ááá·áºáá« (Virtual Hosts > Add)á
ááá·áºáá±á¬á¡áá«ááœáẠá¡ááŸá¬ážá¡ááœááºáž áááºáá±á·áá»áºáá
áºáᯠáá±á«áºáá¬áá«ááẠ- ááœá²á·á
ááºážááŸá¯ááá¯áẠáá»á±á¬ááºáá¯á¶ážáá±áá«áááºá áááºáá®ážááẠááá
áºááŸáááºááŒááºážááŒáá·áº ááŒá±ááŸááºážááá¯ááºáááºááŸá¬ áá¯á¶ááŸááºááŒá
áºáááºá
General tab ááœááºá Document Root ááᯠáááºááŸááºáá« (áááá¯á¡ááºáá±á¬áºáááºážá config ááẠáááºážááá«áá² áá»ááºááœá¬ážááẠááá¯ááºáá«)á áááºááŸááºáá¬ážááŒááºážáááŸááá«áá áá»áœááºá¯ááºááá¯á·á ááá¯ááááºážá¡áááºááᯠáá»áœááºá¯ááºááá¯á·á¡áááºáá±ážáá¬ážááá·áº Virtual Host Name á០áá¯ááºáá°áááºááŒá áºáááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠáááºáá¬áá¬áá áºáá¯áá¬ááá¯ááºá ááŒá±á¬ááºážááŒááºááá±á¬ááºá á®áá áºáá¯ááŸáááŒá±á¬ááºáž áááááááá·áºá¡áá»áááºááŒá áºáááºá á¡á±á¬ááºáá±á¬áºááŒáá«áááºáááºáá»á¬ážááẠLSWS ááᯠáááºááá·áº proxy ááŸáá·áº áááºááá·áºáá±áá¬ááœáẠááŒá¯áá¯ááºááááºááᯠááŒá±á¬ááŒáááá·áºáááºá virtualhost áááºáááºáá»á¬ážááœááºá ááŒááºáá¡ááºááºáááºááºááá¯ááœáá·áºááŒá®áž áááºáá¬áá¬á¡áá»áá¯ážá¡á á¬ážá á¡ááá®áá±ážááŸááºážá¡áá áºáá áºáá¯ááᯠááá·áºáá«-
á¡áááºááŸáá·áº ááááºá á¬ááᯠáá±á¬áºááŒáá«á áááºáááºáááᯠáá¬áááºáá áºáᯠáááºááŸááºááá¯ááºáá±á¬áºáááºáž áááºážááᯠááŸááºáá¬ážáá¬ážááẠááá¯á¡ááºáááºá áááºážááẠáá±á¬ááºá¡ááá·áºáá»á¬ážááœáẠá¡áááºááŒá±áá¬áááºááŒá áºáááºá ááááºá á¬ááẠNextcloud áá¡ááœááºážááá¯ááºážááœááºáááºááœáẠáá±ááá¯ááºááá·áºáá±áá¬ááŒá áºáááº-
áá°áá®áá±á¬ virtual host áááºáááºáá»á¬ážááœááºá Context áááºááºááá¯ááœáá·áºááŒá®áž Proxy á¡áá»áá¯ážá¡á á¬ážá á¡ááŒá±á¬ááºážá¡áá¬á¡áá áºáá áºáá¯ááᯠáááºáá®ážáá«-
ááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºáá«- URI = /, áááºáá¬áᬠ= nextcloud_1 (ááááºá¡ááá·áºá០á¡áááº)
LSWS ááᯠááŒááºáááºá áááºáá«á áááºážááᯠáááºá¡ááºáá¬áá±á·á áºá០áá áºáá»ááºááŸáááºáá¯á¶ááŒáá·áº áá¯ááºáá±á¬ááºááẠá¡á¶á·ááœááºáá»á¬ážá (áá»áá¯ážááá¯ážááá¯ááºáá±á¬ ááŒáœááºáááºáá±á¬ááºáá°ááẠáá»áœááºá¯ááºá¡á¬áž ááŒá±á¬áááº)
- áá»áœááºá¯ááºááá¯á·ááẠáááºááŸááºááá¯áááºá https ááᯠconfigure áá¯ááºáá«á
áááºááŸááºáááŸááá±ážáá¯ááºáááºážá áẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠáá»ááºááŸááºáá¬ážáááºááŒá áºááŒá®ážá áá»áœááºá¯ááºááá¯á·ááœáẠáááºážááᯠáááŸáááŒá®ážááŒá áºááŒá±á¬ááºáž ááá±á¬áá°ááŒá®áž /etc/letsencrypt/live/cloud.connect.link áááºážááœáŸááºááœáẠáá±á¬á·ááŒáá·áºááááºáá«á
"áá¬ážáááºáá°" (Listeners > Add) ááᯠ"https" áá¯áá±á«áºááŒáá«á áá¯á·á áááºážááᯠport 443 ááá¯á·ááœáŸááºááŒááŒá®áž áááºážááẠSecure ááŒá áºáááºááá¯áááááŒá¯áá«á
SSL áááºááºááœááºá áá±á¬á·ááŸáá·áº áááºááŸááºáá®ááá¯á· áááºážááŒá±á¬ááºážááᯠáááºááŸááºáá«-
"áá¬ážáááºáá°" ááᯠáááºáá®ážáá¬ážááŒá®ážá ááᯠVirtual Host Mappings ááá¹áááœáẠáá»áœááºá¯ááºááá¯á·á virtual host ááᯠáááºážááœáẠááá·áºááœááºážáá«áááº-
LSWS ááẠáááºáá±á¬ááºááŸá¯áá áºáá¯ááá¯á·áᬠproxy áá±ážáááºááá¯áá«áá ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠá¡ááŒá®ážáááºááá¯ááºáááºá ááá¯á·áá±á¬áº ááá¯ááááºážá¡áááºáá±á«áºáá°áááºá ááá°áá®áá±á¬ "á¥ááá¬áá»á¬áž" ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá±ážááá¯á·ááẠáááºážááᯠáá»áœááºá¯ááºááá¯á· á¡áá¯á¶ážááŒá¯ááẠá á®á ááºáá¬ážáá«áááºá ááá¯ááááºážáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠáááºážááá¯á·áááá¯ááºááá¯ááºáááºááŸááºáá»á¬áž ááŸááá«áááºá ááá¯á·ááŒá±á¬áá·áºá áááºááẠvirtualhost config ááá¯á·ááœá¬ážáááºááá¯á¡ááºááŒá®áž SSL áááºááºááœáẠáááºážááá±á¬á·ááŸáá·áº áááºááŸááºááᯠáááºáá¶áááºááŸááºáá«á á¡áá¬áááºááœááºá áááºážááᯠvirtual host á¡áá áºáá áºáá¯á á®á¡ááœáẠáá¯ááºáá±á¬ááºááá·áºáááºá
http áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠhttps ááá¯á· ááááºáá°ááá¯ááºááẠurl ááŒááºáááºáá±ážáá¬ážááŒááºážááᯠconfigure áá¯ááºáááºáá»ááºáá±áá«áááºá
(á
áá¬ážáá
ááºá áááºážááẠáááºááá·áºá¡áá»áááºááœáẠááŒá®ážáá¯á¶ážáááºáááºážá áááºážááẠáá°áááºážá¡ááá¯ááºáž https ááá¯á·ááœá¬ážááẠááá±á¬ááºáá¬áá»á¬ážááŸáá·áº á¡ááŒá¬ážáá±á¬á·ááºáá²áá»á¬ážá¡ááœáẠá¡áá»áááºáá»áá±á¬ááºááŒá®ááŒá
áºááŒá®áž ááá¯á¡ááºáá«á no-SSL ááá¯á· ááá¯ááºááá¯ááºáá±ážááá¯á·ááẠá¡áá»áááºáá»áá±á¬ááºááŒá®)á
Rewrite ááá¯ááœáá·áºááŒá®áž Rewrite Rules ááá¯ááœáá·áºáá«-
RewriteCond %{SERVER_PORT} 80
RewriteRule ^.*)$https://%{SERVER_NAME}%{REQUEST_URI } [R=301,L]
áá°ážáááºážáá±á¬ áá¬ážáááºááŸá¯ááœá²ááŸá¬ážááŸá¯ááŒá±á¬áá·áº áá¯á¶ááŸáẠGraceful ááŒááºáááºá áááºááŒááºážááŒáá·áº Rewrite rules áá»á¬ážááᯠáá»áá·áºáá¯á¶ážááẠáááŒá áºááá¯ááºáá«á ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠLSWS ááᯠáá»ááºááá±áááŸáá ááá¯ááºážááá¯ááºážá áá¯ááºážá áá¯ááºážááŸáá·áº áááá±á¬ááºá áœá¬ ááŒááºáááºá áááºáá«áááº-
sudo systemctl lsws.service ááᯠááŒááºáááºá áááºáá«á
áá¬áá¬ááẠport 80 ááá¯áá¬ážáááºááẠá¡ááŒá¬áž Listener ááá¯áááºáá®ážááŒáá«á áá¯á·á á¡á²áá«ááᯠhttp ááá¯á· áá±á«áºáá¡á±á¬ááºá 80th port ááᯠáááºááŸááºááŒá®áž á¡á²áá«á Secure ááá¯ááºáá²á·á
https áá¬ážáá±á¬ááºáá°áááºáááºááŸáá·áº ááŸáá¯ááºážááŸááºááŒááºážááŒáá·áºá áá»áœááºá¯ááºááá¯á·á virtual host ááᯠáááºážááœáẠáá°ážááœá²ááŒáá«á áá¯á·á
ááá¯á¡áá« LSWS ááẠport 80 ááœáẠáá¬ážáá±á¬ááºááŒá®áž url ááᯠááŒááºáááºáá±ážáá¬ážáᬠ443 ááá¯á· áá±á¬ááºážááá¯ááŸá¯áá»á¬áž áá±ážááá¯á·áááºááŒá
áºáááºá
áááá¯á¶ážáá»á¯ááºá¡áá±ááŸáá·áºá áá°áááºážá¡á¬ážááŒáá·áº Debug áá¯áááºááŸááºáá¬ážááá·áº LSWS ááŸááºáááºážá¡ááá·áºááᯠáá»áŸá±á¬á·áá»ááẠá¡ááŒá¶ááŒá¯áá«áááºá á€áá¯ááºááœááºá ááŸááºáááºážáá»á¬ážááẠáá»áŸááºá
á®ážááŒá±á¬ááºážá¡ááá¯ááºáž áá»á¬ážááŒá¬ážáááºá ááá
á¹á
á¡áá»á¬ážá
á¯á¡ááœááºá ááááá±ážáá»ááºá¡ááá·áºááẠáá¯á¶áá±á¬ááºáááºá Server Configuration > Log ááá¯á·ááœá¬ážáá«-
áááºážááẠOpenLiteSpeed ââââááŒá±á¬ááºážááŒááºááá±á¬ááºá
á®áá
áºáá¯á¡ááŒá
ẠOpenLiteSpeed ââáááœá²á·á
ááºážáá¯á¶ááᯠá¡ááŒá®ážáááºá
á±áááºá áá
áºááẠLSWS ááᯠááŒááºáááºá
áááºáá«á ááá·áºááºááᯠááá¯ááºáá¬áá«á
Nextcloud ááᯠáááºááœáá·áºááŒá¯áááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯á¶ááŒááºááá±á¬á
á¬áááºážááœáẠcloud.connect.link ááá¯ááááºážááᯠááá·áºááẠááá¯á¡ááºáá«áááºá config.php ááᯠááŒááºááŒáá¡á±á¬ááºá Ubuntu ááá¯ááá·áºááœááºážáá±á¬á¡áá« Nextcloud ááá¯á¡ááá¯á¡áá»á±á¬ááºááá·áºááœááºážáá²á·ááŒá®áž config áááºá€áá±áá¬ááœááºáááºááŸááááº- /var/snap/nextcloud/current/nextcloud/config á
'cloud.connect.link' áá«áá¬áá®áá¬ááᯠtrusted_domains áá®ážááá¯á· ááá·áºáá«-
'trusted_domains' =>
áááºážáá»ááºážááŒá±á¬áẠ(
0 => '172.16.22.110',
1 => 'cloud.connect.link'á
),
ááá¯á·á¡ááŒááºá áá°áá®áá±á¬ config ááœááºá áááºááẠáá»áœááºá¯ááºááá¯á·á proxy á IP ááááºá á¬ááᯠáááºááŸááºááá«áááºá ááááºá á¬ááẠNextcloud áá¬áá¬ááœáẠááŒááºááá¯ááºáá±á¬ ááááºá á¬ááᯠáááºááŸááºááááºáá°ááá·áºá¡áá»ááºááᯠááá·áºá¡á¬áá¯á¶á á°ážá áá¯ááºááŸá¯ááᯠááœá²áá±á¬ááºáá«áááºá áá±áááœááºáž LSWS áá»ááºááŸá¬ááŒááºá IPá á€á¡ááá·áºáááŸááá«á Nextcloud áááºá¡ááºáá¬áá±á·á áºááẠá¡áá¯ááºáá¯ááºáá±á¬áºáááºáž á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááœáá·áºáááŒá¯áá«á
'trusted_proxies' =>
áááºážáá»ááºážááŒá±á¬áẠ(
0 => '172.16.22.100',
),
áá±á¬ááºážááŒá®á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠááœáá·áºááŒá¯áá»ááºá¡ááºáá¬áá±á·á áºááá¯á· áááºáá±á¬ááºááá¯ááºáááº-
ááŒá¿áᬠááŒá±áááºááœá¬ážááŒá®á ááá¯á¡áá« áá¯á¶ážá
áœá²áá°áá
áºáŠážá
á®ááẠáááºážáááá¯ááºááá¯áẠurl ááœáẠâááá¯áẠcloudâ ááᯠáá±ážáááºážá
áœá¬ á¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®ážá ááá¯ááºáá»á¬ážáá«ááá·áº áá¬áá¬ááẠá¡ááºáá¬áááºááŸáá·áº ááœá²ááœá¬ááœá¬ážáá¬á á¡áá¬ááẠáá¯á¶ážá
áœá²áá°áá»á¬ážááẠáá°áá®áá±á¬ á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáá¶áááŸááááºááŒá
áºááŒá®áž áá±á¬ááºááẠIP ááááºá
á¬áá
áºáá¯áá»áŸ ááááá¯ááºáááºááá¯ááºáá«á
ááá¯á·á¡ááŒááºá áááºááẠáááºááŒáááºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážáá±ážááá¯á·ááẠááŒá±á¬ááºážááŒáẠproxy ááá¯áá¯á¶ážááá¯ááºáá±á¬áºáááºáž Nextcloud ááœááºá áááºážááẠáááá¬áááºááŸá¬ážáá±á¬á¡ááŒááºááŸá¯ááºážááᯠáá±ážáááºááá¯ááºáá«á áá«ááŒá±á¬áá·áº ááœá±ážáá»ááºááœáá·áºáá²á· ááœá±ážáá»ááºááœáá·áºáá«á
áá®áá¬ááºáááºážááᯠáá»áŸáá±ááᬠáááºážáá¬áá«áááºá áá áºá á¯á¶áá áºáá±á¬ááºá¡ááœáẠá¡áá¯á¶ážáááºáááºááá¯á· áá»áŸá±á¬áºááá·áºáá«áááºá á¡áááºá áááºááẠááŒá¿áá¬ááŒá±ááŸááºážááẠááá¯ááá¯ááŒá±ááŒá áºááŒá®áž áááá±á¬ááºáá±á¬áááºážáááºážáá»á¬ážááᯠáááá«áá ááŸááºáá»ááºáá»á¬ážá¡ááœáẠáá»áœááºá¯ááºáá»á±ážáá°ážáááºáá«áááºá
source: www.habr.com