làm reverse proxy với linux
DESCRIPTION
Làm reverse proxy với Linux.TRANSCRIPT
![Page 1: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/1.jpg)
Làm reverse proxy v i Linux + Apache httpd, thu c series "B o v máy ch ..."ớ ộ ả ệ ủ
1. Gi i thi uớ ệ
Chào các fan hâm m Linux,ộ
Bài vi t này ch y u d a trên hai tài li u là ế ủ ế ự ệ "Web Security Appliance With Apache and mod_security" c a Ivan, tác gi mod_security và ủ ả "Securing Apache 2: Step-by-Step" c a ủArtur Maj. Bà con có th xem đây là m t b n d ch ti ng Vi t c a hai tài li u trên, kèm theo ể ộ ả ị ế ệ ủ ệnh ng suy nghĩ riêng c a b n thân tôi d a vào kinh nghi m th c t khi tri n khai reverse ữ ủ ả ự ệ ự ế ểproxy -0-. Bài vi t này có th xem là m t case study thu c t p tài li u ế ể ộ ộ ậ ệ "B o v máy ch an ả ệ ủtoàn v i ph n m m t do"ớ ầ ề ự .
Nhi m v c a chúng ta là b o v m t hay nhi u content web-server -1- n m trong vùng ệ ụ ủ ả ệ ộ ề ằInternal -2-, các web-server này có th là Apache httpd, ho c Microsoft IIS, ho c có th ch ể ặ ặ ể ỉlà m t web-server đ n gi n đ c embedded vào m t ng d ng nào đó. Đ hoàn thành ộ ơ ả ượ ộ ứ ụ ểnhi m v , chúng ta sẽ t p trung vào xây d ng m t firewall/ids ho t đ ng t ng ệ ụ ậ ự ộ ạ ộ ở ầapplication, trong tài li u này g i là reverse-proxy, s d ng Apache httpd -3- trên n n ệ ọ ử ụ ềLinux.
2. Reverse proxy là gì?
M t proxy, theo đ nh nghĩa, là m t thi t b đ ng gi a server và client, tham gia vào "cu c ộ ị ộ ế ị ứ ữ ộtrò chuy n" gi a hai bên. Khái ni m proxy mà chúng ta th ng dùng hàng ngày t t h n ệ ữ ệ ườ ố ơnên đ c g i là m t forward proxy: m t thi t b đ ng gi a m t client và t t c server mà ượ ọ ộ ộ ế ị ứ ữ ộ ấ ảclient đó mu n truy c p vào. M t reverse proxy làm công vi c hoàn toàn ng c l i: nó ố ậ ộ ệ ượ ạđ ng gi a m t server và t t c client mà server này ph i ph c v . Reverse proxy gi ng ứ ữ ộ ấ ả ả ụ ụ ốnh m t nhà ga kiêm m t tr m ki m soát, các request t client, b t bu c ph i ghé vào ư ộ ộ ạ ể ừ ắ ộ ảreverse proxy, t i reverse proxy sẽ ki m soát, l c b các request không h p l , và luân ạ ể ọ ỏ ợ ệchuy n các request h p l đ n đích cu i cùng là các server. Chú ý là m t reverse proxy có ể ợ ệ ế ố ộth luân chuy n request cho nhi u server cùng lúc. ể ể ề
L i th l n nh t c a vi c s d ng reverse proxy là kh năng qu n lí t p trung. M t khi ợ ế ớ ấ ủ ệ ử ụ ở ả ả ậ ộđã đ y đ c t t c traffic đi qua m t tr m ki m soát duy nh t (là reverse proxy), chúng ta ẩ ượ ấ ả ộ ạ ể ấcó th áp d ng nhi u "đ ngh " khác đ tăng c ng an ninh cho h th ng c a mình. Dĩ ể ụ ề ồ ề ể ườ ệ ố ủnhiên, b t kì s n ph m hay công ngh nào cũng có u và khuy t đi m c a nó, đi cùng v i ấ ả ẩ ệ ư ế ể ủ ớsingle point of access bao gi cũng là "bóng ma" single point of failure. Single point of ờfailure có th đ c gi i quy t b ng cách xây d ng cluster. Đây là m t v n đ hoàn toàn ể ượ ả ế ằ ự ộ ấ ềv t qua kh i ph m vi c a bài vi t này, tôi ch xin gi i thi u b nào mu n tìm hi u v ượ ỏ ạ ủ ế ỉ ớ ệ ồ ố ể ềcluster trên Linux thì th ghé vào ử http://www.linux-ha.org. Ngoài ra áp d ng reverse ụproxy đúng cách sẽ giúp tăng c ng performance cũng nh nâng cao scalability c a các ườ ư ủweb-application ch y trên các content server. Chút xíu n a, tôi sẽ đi vào chi ti t các u ạ ữ ế ư
![Page 2: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/2.jpg)
đi m c a reverse proxy cũng nh làm th nào đ khai thác các u đi m đó. ể ủ ư ế ể ư ể
3. Cài đ t máy ch reverse-proxyặ ủ
3.1. Ch n và cài đ t h đi u hành cho reverse proxy ọ ặ ệ ề
Dĩ nhiên là tôi s d ng linux cho máy ch reverse proxy. Tôi không mô t quá trình cài đ t ử ụ ủ ả ặlinux đây b i có r t nhi u tài li u hay trên Internet nói v đ tài này, và h n n a tôi nghĩở ở ấ ề ệ ề ề ơ ữ là m t khi đã nghĩ đ n chuy n làm reverse proxy thì ch c ch n chuy n cài đ t Linux ộ ế ệ ắ ắ ệ ặkhông là v n đ .ấ ề Linux có quá tr i distro, th mrro ch n distro nào?ờ ế ọ Theo tôi thì distro nào cũng nh nhau c thôi, nh ng n u ai đó h i tôi câu h i trên thì câu tr l i sẽ là Trustix -4-. ư ả ư ế ỏ ỏ ả ờB t k ch n distro nào, nh là sau khi cài đ t xong, hãy dành m t chút th i gian đ secure ấ ể ọ ớ ặ ộ ờ ểcái distro c a mình l i tr c khi đ c ti p -5-. Ph n ti p theo chúng ta sẽ bàn v vi c cài ủ ạ ướ ọ ế ầ ế ề ệđ t Apache httpd cũng nh các module kèm theo c a nó.ặ ư ủ
3.2. 1.3.x hay 2.x?
Tr c tiên, tôi nghĩ c n ph i tr l i câu h i là chúng ta sẽ ch n phiên b n Apache nào đ ướ ầ ả ả ờ ỏ ọ ả ểlàm reverse proxy đây, 1.3.x hay 2.x? Tôi ch n 2.x vì ba lý do: th nh t là tôi "nghe đ n" là ọ ứ ấ ồ
có r t nhi u 0-day trong phiên b n 1.3.x ấ ề ả . Lý do th hai là Apache 2.x cung c p m t bứ ấ ộ ộ filtering API t t h n so v i phiên b n 1.3.x, cho phép các module có th nhìn th y và t ngố ơ ớ ả ể ấ ươ tác v i n i dung c a các request cũng nh các response t ng ng t tr l i t server. ớ ộ ủ ư ươ ứ ừ ả ờ ừĐi u này r t quan tr ng đ i v i m t reverse proxy đóng vai trò là m t application gatewayề ấ ọ ố ớ ộ ộ b i vì nó ph i ki m tra t t c thông tin đi xuyên qua nó tr c khi chuy n giao cho bên ở ả ể ấ ả ướ ểnh n. -6-. Lý do cu i cùng là Apache httpd 2.x có performance cao h n h n 1.3.x khi ph c ậ ố ơ ẳ ụv các static content nh file HTML và file hình nh. Tôi quan tâm đ n v n đ này là vì tôi ụ ư ả ế ấ ềcó ý đ nh gi m t i cho các content server bên trong b ng cách tách content ra làm hai lo i ị ả ả ằ ạlà dynamic (các lo i file CGI/Perl, PHP) và static (các file HTML và file hình nh), các ạ ảcontent server ch ph c v dynamic content, còn t t c static content thì đ a qua máy ch ỉ ụ ụ ấ ả ư ủreverse proxy luôn. Lúc đó khi các request c a client đi vào reverse proxy, n u request đó ủ ếcó đích đ n là m t static content, máy ch reverse proxy sẽ tr l i luôn cho client mà ế ộ ủ ả ờkhông c n forward request đó đ n content server phía sau, ch nh ng request đ n các ầ ế ở ỉ ữ ếdynamic content m i đ c forward đ các content server x lí. Tôi sẽ đi vào chi ti t v n ớ ượ ể ử ế ấđ này ph n sau, ch l u ý m t đi u là cu i cùng tôi l i không dùng Apache httpd cho ề ở ầ ỉ ư ộ ề ố ạm c đích này mà l i s d ng m t máy ch web khác chuyên tr static content. ụ ạ ử ụ ộ ủ ị
3.3. Ch n module cho Apache httpd ọ
Ngoài nh ng module mà tài li u "Securing Apache 2: step by step" đ ngh , chúng ta ph i ữ ệ ề ị ảch n thêm các module sau đây: ọ
-mod_rewrite, mod_proxy, mod_proxy_http: các module này sẽ h tr chúng ta trong vi c ỗ ợ ệthi t l p reverse proxy.ế ậ
-mod_security: module này giúp chúng ta c u hình reverse proxy thành m t application ấ ộ
![Page 3: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/3.jpg)
firewall đ ch ng l i các d ng t n công th ng th y vào các web-application ch y trên ể ố ạ ạ ấ ườ ấ ạcontent server. -7-
-mod_ssl: module này giúp chúng ta mã hóa d li u c a các k t n i t client đ n server ữ ệ ủ ế ố ừ ếthông qua giao th c SSL và TLS, bi n giao th c HTTP không an toàn thành giao th c HTTPSứ ế ứ ứ r t b o m t. -8-ấ ả ậ
Ph n quan tr ng ti p theo là ch n m t MPM phù h p v i m c đích làm reverse proxy c a ầ ọ ế ọ ộ ợ ớ ụ ủchúng ta. MPM là vi t t t c a c m t Multi-Processing Module, là m t c i thi n đáng k ế ắ ủ ụ ừ ộ ả ệ ểc a Apache httpd 2.x so v i Apache 1.x. Trong ki n trúc c a Apache 2.x, MPM đóng vai trò ủ ớ ế ủh t s c quan tr ng, nó ch u trách nhi m l ng nghe trên các c ng m ng, ch p nh n các yêuế ứ ọ ị ệ ắ ổ ạ ấ ậ c u k t n i t phía client, và chuy n các yêu c u đó vào bên trong đ Apache httpd x lí -ầ ế ố ừ ể ầ ể ử9-. Trong tr ng h p này tôi ch n MPM worker. MPM worker s d ng thread đ ph c v ườ ợ ọ ử ụ ể ụ ụcác request, do đó nó có kh năng ph c v m t l ng l n các request nh ng l i t n r t ít ả ụ ụ ộ ượ ớ ư ạ ố ấtài nguyên so v i các process-based MPM khác nh prefork. Đ ng th i MPM worker v n ớ ư ồ ờ ẫkhai thác đ c tính n đ nh c a cá process-based MPM b ng cách t o ra nhi u process đ ặ ổ ị ủ ằ ạ ề ểtr c, m i process có nhi u thread đ s n sàng ph c v client -10-.ướ ỗ ề ể ẵ ụ ụ
3.4. Biên d ch và cài đ t Apache httpdị ặ
Câu h i k ti p là biên d ch các module theo ki u nào. Nh chúng ta đ u bi t, có hai cách ỏ ế ế ị ể ư ề ếbiên d ch các module trong Apache httpd. Cách th nh t, g i là ph ng pháp đ ng, là biên ị ứ ấ ọ ươ ộd ch các module thành các th vi n liên k t chia s (t ng t nh các th vi n DLL trên ị ư ệ ế ẻ ươ ự ư ư ệWindows). V i cách này, các module sẽ đ c biên d ch thành các file .so, và sẽ đ c t i lên ớ ượ ị ượ ảkhi Apache httpd kh i đ ng n u c n (tùy theo các câu l nh LoadModule trong file c u hìnhở ộ ế ầ ệ ấ conf/httpd.conf). Cách biên d ch th hai, g i là ph ng pháp tĩnh, là gom t t c module ị ứ ọ ươ ấ ảnhét vào trong file bin/httpd luôn (link statically). Khi kh i đ ng và trong quá trình ch y, ở ộ ạApache httpd không c n ph i t i thêm module nào n a. Ph ng pháp tĩnh đ c xem là l aầ ả ả ữ ươ ượ ự ch n t t h n h t. Ch n ph ng pháp tĩnh, chúng ta không c n dùng đ n module mod_so ọ ố ơ ế ọ ươ ầ ế(module c n thi t đ t i các file .so trong ph ng pháp đ ng). H n n a, theo khuy n cáo ầ ế ể ả ươ ộ ơ ữ ếc a Apache, s d ng ph ng pháp tĩnh sẽ giúp tăng 5% v m t performance so v i ủ ử ụ ươ ề ặ ớph ng pháp đ ng.ươ ộ
Chúng ta t i Apache httpd 2.x ả ở http://httpd.apache.org/download.cgi và t i mod_security ảt i ạ http://www.modsecurity.org s d ng các l nh sau:ử ụ ệCODElocalhost$ wget http://www.tux.org/pub/net/apache/di...-2.0.54.tar.gzlocalhost$ wget http://www.modsecurity.org/download/...y-1.8.7.tar.gz localhost$ tar -xzf httpd-2.0.54.tar.gz -C /usr/local/srclocalhost$ tar -xzf modsecurity-1.8.7.tar.gz -C /usr/local/src
Tài li u kèm theo c a mod_security ch h ng d n cách biên d ch mod_security thành m t ệ ủ ỉ ướ ẫ ị ộth vi n chia s c a Apache httpd, do đó chúng ta c n ph i chu n b đôi ch đ có th ư ệ ẻ ủ ầ ả ẩ ị ỗ ể ểbiên d ch tĩnh mod_security:ịCODE
![Page 4: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/4.jpg)
localhost$ cd /usr/local/srclocalhost$ mkdir -p httpd-2.0.54/modules/securitylocalhost$ cp modsecurity-1.8.7/apache2/mod_security.c httpd-2.0.54/modules/securitylocalhost$ cp httpd-2.0.54/modules/echo/Makefile.in httpd-2.0.54/modules/security
Okay, xong xuôi, b t đ u biên d ch nh sau:ắ ầ ị ư
CODElocalhost$ cd /usr/local/src/httpd-2.0.54localhost$ ./configure \--with-mpm=worker \--disable-charset-lite \--disable-include \--disable-env \--disable-status \--disable-autoindex \--disable-asis \--disable-cgid \--disable-cgi \--disable-negotiation \--disable-imap \ --disable-actions \--disable-userdir \--disable-alias \--disable-so \--with-module=security:mod_security.c \--enable-modules='ssl rewrite proxy proxy_http'
N u quá trình biên d ch thành công, chúng ta sẽ ti p t c nh sau đ cài Apache httpd vào ế ị ế ụ ư ểh th ng (t i th m c m c đ nh là /usr/local/apache):ệ ố ạ ư ụ ặ ị
CODElocalhost$ makelocalhost$ sulocalhost# umask 022localhost# make installlocalhost# chown -R root:sys /usr/local/apache
3.5. Đ i "root" c a serverổ ủ
Ph n này xin vui lòng tham kh o tài li u "Securing Apache 2:Step by Step."ầ ả ệ
-m
(còn ti p)ế
![Page 5: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/5.jpg)
Ph n sau:ầ4. C u hình Apache httpd làm reverse proxyấ
-----------------------0-: Th c t ph n ti ng Vi t c a tài li u "Securing Apache 2: Step-by-Step" tôi sao chép ự ế ầ ế ệ ủ ệkhá nhi u t b n d ch và m r ng tài li u "Securing Apache: Step-by-Step" ề ừ ả ị ở ộ ệ(http://www.securityfocus.com/infocus/1694) c a hnd aka conmale. Tham kh o thêm v ủ ả ềb n d ch và m r ng c a anh conmale t i ả ị ở ộ ủ ạ http://www.hvaonline.net/forum/index.php?a...T&f=161&t=46199
-1-: ngoài web-server ra, gi i pháp reverse proxy (ho c t ng t ) có th áp d ng cho các ả ặ ươ ự ể ụd ch v khác nh VNC (xem th ị ụ ư ử http://sourceforge.net/projects/vnc-reflector/), mail (xem th tài li u "Qmail as the mail gateway" c a ử ệ ủ [email protected]). Ch duy nh t ỉ ấm t d ch v tui ch a làm đ c reverse proxy là FTP, b nào có thông tin v ftp reverse ộ ị ụ ư ượ ồ ềproxy thì cho tui vài xu.
-2-: chúng ta v n có th thi t l p reverse proxy đ b o v cho các web-server n m ngay ẫ ể ế ậ ể ả ệ ằ ởvùng DMZ, ho c thi t l p m t reverse-proxy đ t ngay trong vùng Internal đ b o v các ặ ế ậ ộ ặ ể ả ệweb-server vùng Internal t các m i hi m h a đ n t bên trong. ở ừ ố ể ọ ế ừ
-3-: Ngoài Apache httpd ra, còn có r t nhi u software khác có th đ c ng d ng đ làm ấ ề ể ượ ứ ụ ểreverse proxy mà đáng k nh t là pound. Thao kh o thêm t i đ a ch ể ấ ả ạ ị ỉhttp://www.apsis.ch/pound/.
-4-: Trustix là m t distro nh g n (tr n b cài đ t ch có m t CD duy nh t) đ c xây d ng ộ ỏ ọ ọ ộ ặ ỉ ộ ấ ượ ựd a trên RedHat v i hai m c tiêu chính là b o m t và n đ nh. Phiên b n stable m i nh t ự ớ ụ ả ậ ổ ị ả ớ ấc a Trustix là 2.2, phiên b n unstable là 3.0 RC2. Tham kh o thêm t i ủ ả ả ạ www.trustix.org.
-5-: Tham kh o tài li u Linux Security HOWTO có t i ả ệ ạ http://www.tldp.org đ bi t thêm chiể ế ti t. Ph n m m ế ầ ề Bastille-Linuxcũng sẽ r t h u d ng trong vi c secure cho các Linux server.ấ ữ ụ ệ
-6-: Ch có s d ng Apache 2.x thì nh ng lu t c n l c OUTPUT c a mod_security m i có tácỉ ử ụ ữ ậ ả ọ ủ ớ d ng.ụ
-7-: Tham kh o thêm tài li u v mod_security t i đ a ch ả ệ ề ạ ị ỉ http://www.modsecurity.org và lo t kí s c a conmale v các v t n công DDoS vào HVA.ạ ự ủ ề ụ ấ
-8-: K t phiên b n Apache httpd 2.0, mod_ssl đã đ c chính th c đ a vào Apache httpd. ể ừ ả ượ ứ ưTham kh o thêm tài li u v mod_ssl t i đ a ch ả ệ ề ạ ị ỉ http://www.modssl.org.
-9-: Ch n l a MPM cho Apache 2.x là m t v n đ c c kì quan tr ng, nh h ng r t nhi n ọ ự ộ ấ ề ự ọ ả ưở ấ ềđ n performance c a server, do đó tôi đ ngh nh ng ai quan tâm đ n Apache 2.x, nên ế ủ ề ị ữ ếtham kh o thêm tài li u v MPM t i ả ệ ề ạ http://httpd.apache.org/docs-2.0/mpm.html
-10-: T i sao thread l i "ngon" h n process v performance? Nh ng ai quan tâm đ n v n ạ ạ ơ ề ữ ế ấ
![Page 6: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/6.jpg)
đ này xin tìm các tìm đ c các tài li u sau đây:ề ọ ệAdvanced Linux programming (http://www.advancedlinuxprogramming.com)Understanding the Linux kernel.
Cài Đ t Và C u Hình LAMP V i Apache 2.2.9, PHP5.2.6, MySQL 5.0.51b, CentOS 5.1 ặ ấ ớServer Cài đ t webserver t các gói riêng bi t: apache 2.2.9, PHP 5.2.6 MySQL ặ ừ ệ5.0.51b, Proftp1.3.1 trên h đi u hành CentOS5.1ệ ề- Cài đ t h đi u hành m c c b n nh t, updateặ ệ ề ở ứ ơ ả ấ- Cài đ t thêm các gói th vi n: có th cài t DVD cài đ t hay cài qua m ng. T t nh t là cài ặ ư ệ ể ừ ặ ạ ố ấqua m ng đ có đ c các gói m i nh t.ạ ể ượ ớ ấ- Download các gói - Cài đ t Mysqlặ- Biên d ch apache và PHP và c u hình cho PHP ch y v i apacheị ấ ạ ớ- C u hình apache ch y đ c Vhost theo các user và các module liên quan.ấ ạ ượ- Cài đ t các công c qu n lý SQL: phpmyadminặ ụ ả- Cài đ t Proftp 1.3.1ặ- Test
T i sao ta l i ph i cài t ng gói trong khi ch b ng vài thao tác đ n gi n trong quá trình cài ạ ạ ả ừ ỉ ằ ơ ảđ t, ta cũng có th có m t server v i đ y đ các ph n m m nh th ? Câu tr l i chính là ặ ể ộ ớ ầ ủ ầ ề ư ế ả ờcác gói đ c kèm theo b cài hay đ c cài phân ph i đ chúng ta cài thông qua l nh yum ượ ộ ượ ố ể ệth ng không có đ c nh ng phiên b n m i nh t, và đ c bi t là chúng ta r t khó t i u ườ ượ ữ ả ớ ấ ặ ệ ấ ố ưđ c chúng. Vì th khi chúng ta t biên d ch l y tuy có khó khăn h n và ph c t p h n ượ ể ự ị ấ ơ ứ ạ ơnh ng nó cho chúng ta đ c quy n làm ch hoàn toàn, ta hoàn toàn có th thêm hay b t ư ượ ề ủ ể ớnh ng module nào mà mình mu n và b đi cái nào mà mình không mu n, nh m đem l i ữ ố ỏ ố ằ ạcho chúng ta m t server m nh mẽ và an toàn nh t. Và đ c bi t c m giác t mình build m iộ ạ ấ ặ ệ ả ự ọ cái sẽ vui h n r t nhi u, và nó cho mình nhi u cái đ h c. Chúng ta cùng b t tay vào làm ơ ấ ề ề ể ọ ắnào.
1.Cài đ t h đi u hành:ặ ệ ềPh n này đã đ c nói rõ trong m c khác, đây chúng ta ch đi m qua vài v n đ quan ầ ượ ụ ở ỉ ể ấ ềtr ng khi cài.ọChú ý trong quá trình cài đ t, khi ch ng trình đ a ra danh sách các ki u cài ta không ch nặ ươ ư ể ọ vào gì c , nh th chúng ta sẽ có m t h đi u hành g n nh .ả ư ế ộ ệ ề ọ ẹChú ý n u nh ai có kh năng hi u bi t thì có th ch n vào ph n customize đ b thêm đi ế ư ả ể ế ể ọ ầ ể ỏm t s m c không c n th t nh Text-base internet, Dialup networking support.ộ ố ụ ầ ế ưSau khi cài xong máy sẽ kh i đ ng l i, đ Update các b n c p nh t cho máy ta dùng l nh:ở ộ ạ ể ả ậ ậ ệ
PHP Code:yum update
![Page 7: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/7.jpg)
2.Cài thêm các th vi n c n thi t:ư ệ ầ ếTrong quá trình biên d ch các gói nh MySQL,apache hay PHP chúng ta c n thêm b biên ị ư ầ ộd ch và m t s th vi n, chúng ta sẽ b sung chúng b ng câu l nh sau:ị ộ ố ư ệ ổ ằ ệ
PHP Code:[color=blue][font=Tahoma]yum install gcc gcc-c++ openssl bzip2 unzip zip ncurses-devel zlib-devel openssl-devel libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel mhash-devel libmcrypt libmcrypt-devel libpng-devel [/font][/color][color=blue][font=Tahoma][/font][/color]
3.Download các gói:Chúng ta sẽ download các gói t nh ng link sau:ừ ữApache: http://httpd.apache.orgPHP Code:wget http://apache.cs.utah.edu/httpd/httpd-2.2.9.tar.bz2
PHP: http://vn.php.netPHP Code:wget http://vn2.php.net/distributions/php-5.2.6.tar.bz2
MySQL: http://www.mysql.comPHP Code:
[ color = blue ][ font = Times New Roman ] wget ftp : //mirror.anl.gov/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.51b.tar.gz [/font] [ color = blue ][ font = Times New Roman ][/ font ][/ color ] [/color]
ProFTP: http://www.proftpd.orgPHP Code:[color=blue][font=Times New Roman]wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.bz2[/font][color=blue][font=Times New Roman][/font][/color] [/color]
Chúng ta download các file trên b ng l nh wget và đ ng d n đ n file, ví d :ằ ệ ườ ẫ ế ụPHP Code:[color=blue][font=Tahoma]wget http://apache.cs.utah.edu/httpd/httpd-2.2.9.tar.bz2 [/font]
![Page 8: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/8.jpg)
[color=blue][font=Tahoma][/font][/color] [/color]
Gi s các gói trên đ u đ c t i v th m c /usr/local/setupả ử ề ượ ả ề ư ụ
4. Biên d ch MySQLịTr c tiên chúng ta c n t o m t user và group dành riêng cho MySQL ch y:ướ ầ ạ ộ ạPHP Code:[color=blue][font=Times New Roman]groupadd mysql[/font][/color][color=blue][font=Times New Roman][/font][/color]
PHP Code:[color=blue][font=Times New Roman]useradd -g mysql mysql[/font][/color][color=blue][font=Times New Roman][/font][/color]
Gi i nén file nén c a b MySQL và biên d ch:ả ủ ộ ịPHP Code:[color=blue][font=Times New Roman]tar -vxzf mysql-5.0.51b.tar.gz[/font][/color][color=blue][font=Times New Roman][/font][/color]
PHP Code:[color=blue][font=Times New Roman]cd mysql-5.0.51b[/font][/color][color=blue][font=Times New Roman][/font][/color]
Tr c tiên chúng ta c n t o ra file k ch b n đ ch ng trình d ch có th d ch ch ng trìnhướ ầ ạ ị ả ể ươ ị ể ị ươ theo ý chúng ta. Thông th ng đ biên d ch m t ch ng trình chúng ta có r t nhi u l a ườ ể ị ộ ươ ấ ề ựch n, đ xem đ c các l a ch n này chúng ta dùng l nh:ọ ể ượ ự ọ ệPHP Code:[color=blue][font=Times New Roman]./configure –help | less[/font][/color][color=blue][font=Times New Roman][/font][/color]
Khi ch y l nh này ch ng trình sẽ li t kê ra r t nhi u l a ch n, n u nh có th thì chúng ạ ệ ươ ệ ấ ề ự ọ ế ư ểta đ c thêm ph n này và quy t đ nh thêm mình sẽ dùng thêm l a ch n nào tùy thu c vào ọ ầ ế ị ự ọ ộnhu c u c a m i ng i.ầ ủ ỗ ườChúng ta sẽ biên d ch MySQL b ng nh ng câu l nh sau:ị ằ ữ ệ
PHP Code:[color=blue][font=Tahoma]./configure [/font][/color][color=blue][font=Tahoma]--prefix=/usr/local/mysql [/font][/color][color=blue][font=Tahoma]--localstatedir=/usr/local/mysql/data [/font][/color][color=blue][font=Tahoma]--with-unix-soket-path=/usr/local/data [/font][/color][color=blue][font=Tahoma]--disable-maintainer-mode [/font][/color][color=blue][font=Tahoma]--with-mysqld-user=mysql [/font][/color][color=blue][font=Tahoma]--enable-large-files-without-debug [/font][/color][color=blue][font=Tahoma]--without-comment [/font][/color]
![Page 9: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/9.jpg)
[color=blue][font=Tahoma]--without-bench[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]make[/font][/color][color=blue][font=Tahoma]make install [/font][/color][color=blue][font=Tahoma][/font][/color]
Ti p theo chúng ta t o th m c data trong th m c Mysql:ế ạ ư ụ ư ụ
PHP Code:[color=blue][font=Tahoma]mkdir /usr/local/mysql/data [/font][/color][color=blue][font=Tahoma][/font][/color]
Hi n t i MySQL đã đ c cài đ t nh ng ch a hoàn ch nh, chúng ta c n ch y thêm nh ng ệ ạ ượ ặ ư ư ỉ ầ ạ ữl nh sau:ệ
PHP Code:./scripts/mysql_install_db
Ti p theo đ đ m b o v n đ b o m t ta c n gán quy n ch cho phép user root và MySQL ế ể ả ả ấ ề ả ậ ầ ề ỉđ c phép truy c p vào th m c c a MySQL cũng nh database.ượ ậ ư ụ ủ ư
PHP Code:[color=blue][font=Tahoma]chown -R root:mysql /usr/local/mysql[/font][/color][color=blue][font=Tahoma]chown -R mysql:mysql /usr/local/mysql/data[/font][/color][color=blue][font=Tahoma][/font][/color]
Ti p theo chúng ta copy file c u hình cho MySQL, tùy thu c vào c u hình c a server mà ế ấ ộ ấ ủb n sẽ ch n nh ng file cho phù h p (small, medium, large, huge):ạ ọ ữ ợ
PHP Code:[color=blue][font=Tahoma]cp ./support-files/my-medium.cnf /etc/my.cnf[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]chown root:sys /etc/my.cnf[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]chmod 644 /etc/my.cnf [/font][/color][color=blue][font=Tahoma][/font][/color]
Ti p theo chúng ta c n khai báo cho h th ng bi t ch ch a các th vi n c a MySQL. ế ầ ệ ố ế ỗ ứ ư ệ ủ
![Page 10: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/10.jpg)
Chúng ta sẽ s d ng liên k t đ ng đ n các th vi n này và ch n p khi c n. Nh th sẽ làmử ụ ế ộ ế ư ệ ỉ ạ ầ ư ế cho b nh c a h thông m c ít nh t:ộ ớ ủ ệ ở ứ ấ
PHP Code:[color=blue][font=Tahoma]echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf[/font][/color][color=blue][font=Tahoma]ldconfig[/font][/color][color=blue][font=Tahoma][/font][/color]
Ti p theo chúng ta t o script cho MySQL t ch y m i khi chúng h th ng ch y:ế ạ ự ạ ỗ ệ ố ạPHP Code:[color=blue][font=Times New Roman]cp ./support-files/mysql.server /etc/rc.d/init.d/mysql[/font][/color][color=blue][font=Times New Roman][/font][/color]
PHP Code:[color=blue][font=Times New Roman]chmod +x /etc/rc.d/init.d/mysql[/font][/color][color=blue][font=Times New Roman][/font][/color]
Đ ch y đ c các file c a MySQL (nh mysqladmin,mysqldump…) chúng ta c n ch y ể ạ ượ ủ ư ầ ạnh ng l nh sau:ữ ệ
PHP Code:[color=blue][font=Tahoma]cd /usr/local/mysql/bin/[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]for file in *; do ln -s /usr/local/mysql/bin/$file /usr/bin/$file;[/font][/color][color=blue][font=Tahoma]done [/font][/color][color=blue][font=Tahoma][/font][/color]
Đ n đây công vi c cài đ t MySQL đã xong c b n, đ kh i đ ng MySQL chúng ta ch y:ế ệ ặ ơ ả ể ở ộ ạ
PHP Code:service mysql start
N u b n nhìn th y dòng ch Starting MySQL SUCCESS! thì xin chúc m ng b n. MySQL đã ế ạ ấ ữ ừ ạch y, còn n u có thông báo l i gì thì chúng ta c n xem l i quá trình đã làm trên.ạ ế ỗ ầ ạ ởĐ ch c ch n xem MySQL đã ch y ch a các b n có th dùng l nh:ể ắ ắ ạ ư ạ ể ệ
PHP Code:mysqladmin version
![Page 11: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/11.jpg)
Chúng ta sẽ th y có k t qu nh sau:ấ ế ả ư
PHP Code:[color=blue][font=Tahoma]mysqladmin Ver 8.41 Distrib 5.0.51b, for redhat-linux-gnu on i686[/font][/color][color=blue][font=Tahoma]Copyright (C) 2000-2006 MySQL AB[/font][/color][color=blue][font=Tahoma]This software comes with ABSOLUTELY NO WARRANTY. This is free software,[/font][/color][color=blue][font=Tahoma]and you are welcome to modify and redistribute it under the GPL license[/font][/color][color=blue][font=Tahoma] [/font][/color][color=blue][font=Tahoma]Server version 5.0.51b-log[/font][/color][color=blue][font=Tahoma]Protocol version 10[/font][/color][color=blue][font=Tahoma]Connection Localhost via UNIX socket[/font][/color][color=blue][font=Tahoma]UNIX socket /tmp/mysql.sock[/font][/color][color=blue][font=Tahoma]Uptime: 2 min 40 sec[/font][/color][color=blue][font=Tahoma][/font][/color]
Khi cài xong thì password c a MySQL là tr ng vì th ta c n ph i đ i password này b ng ủ ắ ế ầ ả ổ ằl nh:ệPHP Code:mysqladmin -u root password “new-password”
trong đó new-password là do b n đ t và chú ý là không có d u “”ạ ặ ấ
Đ ki m tra l i password mình v a đ a vào có chính xác không chúng ta dùng lênh:ể ể ạ ừ ưPHP Code:mysql -u root –p
B n sẽ đ c yêu c u nh p passwordạ ượ ầ ậEnter password:Khi nh p đúng các b n sẽ có đ c k t qu :ậ ạ ượ ế ảPHP Code:[color=blue][font=Tahoma]Welcome to the MySQL monitor. Commands end with ; or g.[/font][/color][color=blue][font=Tahoma]Your MySQL connection id is 3[/font][/color][color=blue][font=Tahoma]Server version: 5.0.51b-log Source distribution[/font][/color][color=blue][font=Tahoma] [/font][/color][color=blue][font=Tahoma]Type 'help;' or '\h' for help. Type '\c' to clear the buffer.[/font][/color][color=blue][font=Tahoma] [/font][/color]
![Page 12: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/12.jpg)
[color=blue][font=Tahoma]mysql>[/font][/color][color=blue][font=Tahoma][/font][/color]
5. Biên d ch Apache và PHPịTr c tiên chúng ta cũng c n gi i nén chúng:ướ ầ ảPHP Code:tar -vxjf httpd-2.2.9.tar.bz2
PHP Code:tar -vxjf php-5.2.6.tar.bz2
Biên d ch Apache:ịPHP Code:cd httpd-2.2.9
Chúng ta sẽ biên d ch apache m c t i thi u, t c là c n gì thì biên d ch module đó đ bi t ị ở ứ ố ể ứ ầ ị ể ếthêm v các module chúng ta có th tham kh o thêm l nh ề ể ả ệPHP Code:./configure --help | less
đây tôi c n ch y các module deflate, suexec, vhost, unique-id, rewrite nên tôi sẽ build Ở ầ ạnh sau:ư
PHP Code:[color=blue][font=Tahoma]./configure [/font][/color][color=blue][font=Tahoma]--prefix=/usr/local/apache2 [/font][/color][color=blue][font=Tahoma]--enable-shared=max [/font][/color][color=blue][font=Tahoma]--enable-unique-id [/font][/color][color=blue][font=Tahoma]--enable-rewrite [/font][/color][color=blue][font=Tahoma]--enable-dav [/font][/color][color=blue][font=Tahoma]--enable-dav-lock [/font][/color][color=blue][font=Tahoma]--enable-logio [/font][/color][color=blue][font=Tahoma]--enable-headers [/font][/color][color=blue][font=Tahoma]--enable-ssl [/font][/color][color=blue][font=Tahoma]--enable-vhost-alias [/font][/color][color=blue][font=Tahoma]--enable-suexec [/font][/color][color=blue][font=Tahoma]--enable-deflate [/font][/color][color=blue][font=Tahoma]--enable-module=so[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:
![Page 13: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/13.jpg)
[color=blue][font=Tahoma][php]make
[/font][/color]PHP Code:make install
[/php]
Ti p theo là biên d ch PHP:ế ị
PHP Code:[color=blue][font=Tahoma]./configure [/font][/color][color=blue][font=Tahoma]--prefix=/usr/local/php [/font][/color][color=blue][font=Tahoma]--with-apxs2=/usr/local/apache2/bin/apxs [/font][/color][color=blue][font=Tahoma]--with-curl=/usr/lib [/font][/color][color=blue][font=Tahoma]--with-gd [/font][/color][color=blue][font=Tahoma]--enable-inline-optimization [/font][/color][color=blue][font=Tahoma]--disable-debug [/font][/color][color=blue][font=Tahoma]--enable-gd-native-ttf [/font][/color][color=blue][font=Tahoma]--with-ttf [/font][/color][color=blue][font=Tahoma]--with-gettext [/font][/color][color=blue][font=Tahoma]--with-jpeg-dir=/usr/lib [/font][/color][color=blue][font=Tahoma]--with-freetype-dir=/usr/lib [/font][/color][color=blue][font=Tahoma]--with-kerberos [/font][/color][color=blue][font=Tahoma]--with-openssl [/font][/color][color=blue][font=Tahoma]--with-mcrypt [/font][/color][color=blue][font=Tahoma]--with-mhash [/font][/color][color=blue][font=Tahoma]--with-mysql=/usr/local/mysql [/font][/color][color=blue][font=Tahoma]--with-pear [/font][/color][color=blue][font=Tahoma]--with-png-dir=/usr/lib [/font][/color][color=blue][font=Tahoma]--with-zlib [/font][/color][color=blue][font=Tahoma]--with-zlib-dir=/usr/lib [/font][/color][color=blue][font=Tahoma]--enable-zip [/font][/color][color=blue][font=Tahoma]--enable-bcmath [/font][/color][color=blue][font=Tahoma]--enable-calendar [/font][/color][color=blue][font=Tahoma]--enable-ftp [/font][/color][color=blue][font=Tahoma]--enable-magic-quotes [/font][/color][color=blue][font=Tahoma]--enable-sockets [/font][/color][color=blue][font=Tahoma]--enable-mbstring [/font][/color][color=blue][font=Tahoma]--enable-wddx=shared [/font][/color][color=blue][font=Tahoma]--enable-xml [/font][/color][color=blue][font=Tahoma]--with-regex=system[/font][/color][color=blue][font=Tahoma] [/font][/color][color=blue][font=Tahoma]make[/font][/color][color=blue][font=Tahoma]make install[/font][/color][color=blue][font=Tahoma][/font][/color]
![Page 14: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/14.jpg)
copy file php.ini vào th m c PHPư ụ
PHP Code:[color=blue][font=Tahoma]cp php.ini-dist /usr/local/php/lib/php.ini[/font][/color][color=blue][font=Tahoma][/font][/color]
Đ cho ti n s a đ i ta t o các liên k t c a các file config c a apache và php vào trong th ể ệ ử ổ ạ ế ủ ủ ưm c /etcụPHP Code:[color=blue][font=Tahoma]ln -s /usr/local/php/lib/php.ini /etc/php.ini[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]ln -s /usr/local/apache2/conf/httpd.conf /etc/httpd.conf[/font][/color][color=blue][font=Tahoma] [/font][/color][color=blue][font=Tahoma][/font][/color]
Đ n đây PHP đã đ c biên d ch đ ch y đ c v i Apache, chúng ta c n c u hình apache ế ượ ị ể ạ ượ ớ ầ ấđ hi u đ c file .phpể ể ượM file httpd.conf :ở
PHP Code:vi /etc/httpd.conf
Tìm đ n dòng ế
PHP Code:AddType application/x-gzip .gz .tgz
Chúng ta thêm vào ngay bên d i dòng sau:ướ
PHP Code:AddType application/x-httpd-php .php
Tìm đ n dòng ếPHP Code:[color=blue][font=Tahoma]<IfModule dir_module>[/font][/color][color=blue][font=Tahoma] DirectoryIndex index.html[/font][/color]
![Page 15: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/15.jpg)
[color=blue][font=Tahoma]</IfModule>[/font][/color][color=blue][font=Tahoma][/font][/color]
Chúng ta s a l i nh sau:ử ạ ư
PHP Code:[color=blue][font=Tahoma]<IfModule dir_module>[/font][/color][color=blue][font=Tahoma] DirectoryIndex index.php index.htm index.php3 index.html[/font][/color][color=blue][font=Tahoma]</IfModule>[/font][/color][color=blue][font=Tahoma][/font][/color]
Cũng nh MySQL chúng ta c n khai báo v trí các th vi n và các file binary c a apache:ư ầ ị ư ệ ủ
PHP Code:[color=blue][font=Tahoma]echo "/usr/local/apache2/lib/" >> /etc/ld.so.conf[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]ldconfig[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:cd /usr/local/apache2/bin/
PHP Code:[color=blue][font=Tahoma]for file in *; do ln -s /usr/local/apache2/bin/$file /usr/bin/$file;[/font][/color][color=blue][font=Tahoma]done[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:cd /usr/local/php/bin/
PHP Code:[color=blue][font=Tahoma]for file in *; do ln -s /usr/local/php/bin/$file /usr/bin/$file;[/font][/color][color=blue][font=Tahoma]done[/font][/color][color=blue][font=Tahoma][/font][/color]
T o script đ apache t kh i đ ng:ạ ể ự ở ộ
PHP Code:
![Page 16: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/16.jpg)
[color=blue][font=Tahoma]ln -s /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]chmod +x /etc/rc.d/init.d/httpd[/font][/color][color=blue][font=Tahoma][/font][/color]
PHP Code:[color=blue][font=Tahoma]ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S90httpd[/font][/color][color=blue][font=Tahoma][/font][/color]
Đ b t Apache chúng ta dùng l nh:ể ậ ệPHP Code:service httpd start
Chúng ta c n t o m t file phpinfo.php đ ki m tra các thông s :ầ ạ ộ ể ể ố
PHP Code:vi /usr/local/apache2/htdocs/phpinfo.php
PHP Code:<?phpecho phpinfo();?>
Sau đó chúng ta vào m t máy khác gõ vào trình duy tộ ệhttp://ip-server/phpinfo.php
ip server là IP máy chúng ta cài serverN u các b n nhìn th y các thông s c a apache và php trên server thì xin chúc m ng.ế ạ ấ ố ủ ừChúng ta đã hoàn thành vi c cài đ t cho serverệ ặ
S d ng virtual host (tên o) trong Apacheử ụ ả
Ng i dùng s d ng tên o v i m c đích ch y đ c nhi u tên (hostnames) khác ườ ử ụ ả ớ ụ ạ ượ ềnhau trên m t máy ch . Có hai lo i tên o có th s d ng trong Apache: cách d a ộ ủ ạ ả ể ử ụ ựvào tên (name-based virtual host) và cách d a vào IP (IP-based virtual host).ự
![Page 17: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/17.jpg)
S d ng tên o b ng cách d a vào tên có l i đi m là b n ch c n dùng m t đ a ch IP cho ử ụ ả ằ ự ợ ể ạ ỉ ầ ộ ị ỉt t cá các tên. ấĐi u quan tr ng là b n ph i khai báo t t c các tên b n mu n dùng v i Apache trong máy ề ọ ạ ả ấ ả ạ ố ớch DNS tr củ ướ . N u b n ch khai báo tho i mái các tên khác nhau trong httpd.conf (hay ế ạ ỉ ảapache.conf) mà trong máy ch DNS không h có thông tin c a các tên thì ng i dùng sẽ ủ ề ủ ườkhông th y đ c trang web c a b n. Cái đi m y u c a vi c s d ng tên o d a vào tên là ấ ượ ủ ạ ể ế ủ ệ ử ụ ả ựb n không th xài SSL (ạ ể https://) cho t t c các tên vì SSL yêu c u m i tên ph i có riêng ấ ả ầ ỗ ảm t IP trong khi s d ng tên o d a vào tên thì b n ch có m t IP duy nh t cho nhi u tên ộ ử ụ ả ự ạ ỉ ộ ấ ềkhác nhau. Ví d c th : ụ ụ ểvnlinux.org có đ a ch là ị ỉ 24.153.136.146. T i sao mình bi t? Ch vi c gõ ạ ế ỉ ệ host vnlinux.org thì b n sẽ th y tr l i gi ng bên d i: ạ ấ ả ờ ố ướrhs@gw rhs $ host vnlinux.orgvnlinux.org has address 24.153.136.146 M i l n ghé thăm trang web vnlinux.org, thì ng i dùng có th gõ ỗ ầ ườ ể http://www.vnlinux.org hay http://vnlinux.org sẽ đ u th y c hai đ a ch khác nhau nh ng n i dung thì nh nhau. ề ấ ả ị ỉ ư ộ ưT i sao v y? N u b n gõ ạ ậ ế ạ host www.vnlinux.org thì b n sẽ th y tr l i là ạ ấ ả ờrhs@gw rhs $ host www.vnlinux.orgwww.vnlinux.org is an alias for vnlinux.org. Lý do là vì mình đã khai báo trong DNS record, www.vnlinux.org sẽ là alias (hay còn g i là ọCNAME khi thi t l p máy ch DNS) c a ế ậ ủ ủ vnlinux.org Bên d i là nh ng hàng mình l y ra tướ ữ ấ ừ t p tin db.vnlinux.org c a máy ch DNS ậ ủ ủvnlinux.org. IN A 24.153.136.146www.vnlinux.org. IN CNAME vnlinux.org. Trong httpd.conf (hay apache.conf), mình khai báo ServerName www.vnlinux.org Ví d trên ch đ n thu n gi i thích cách dùng CNAME cho trang web . ụ ỉ ơ ầ ảK ti p mình sẽ gi i thích cách c u hình dns và apache cho vi c s d ng tên o d a vào ế ế ả ấ ệ ử ụ ả ựtên (name-based virtual host). Ví d trên b n cũng đã th y ụ ạ ấ www.vnlinux.org có IP là 24.153.136.146 Mình cũng đã có nh ng trang web sau cùng có chung IP v i ữ ớ vnlinux.org b ng cách s d ng tên o d a vào ằ ử ụ ả ựtên. howto.vnlinux.org i18n.vnlinux.org d chthu t.vnlinux.org *ị ậ Bên d i là k t qu c a l nh host cho nh ng tên phía trên. ướ ế ả ủ ệ ữrhs@gw rhs $ host howto.vnlinux.orghowto.vnlinux.org has address 24.153.136.146 rhs@gw rhs $ host i18n.vnlinux.orgi18n.vnlinux.org has address 24.153.136.146 rhs@gw rhs $ host xn--dchthut-5p4c4j.vnlinux.orgxn--dchthut-5p4c4j.vnlinux.org has address 24.153.136.146 * xn--dchthut-5p4c4j là punycode format cho d chthu tị ậ
![Page 18: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/18.jpg)
Xem thêm v punycode b ng cách nh n đây ề ằ ấ http://search.yahoo.com/search?ei=UT...sfp&p=punycode Thông tin khai báo cho DNS (Nh kh i đ ng l i máy ch DNSớ ở ộ ạ ủ ): howto.vnlinux.org. IN A 24.153.136.146i18n.vnlinux.org. IN A 24.153.136.146xn--dchthut-5p4c4j.vnlinux.org. IN A 24.153.136.146 Thông tin khai báo trong httpd.conf (hay apache.conf hay VHost.conf...) NameVirtualHost 24.153.136.146:80(VirtualHost 24.153.136.146:80)ServerAdmin [email protected] /N i/các/t p/tin/n m/trong/htdocsơ ậ ằServerName www.vnlinux.orgErrorLog logs/VietLUG_error_logCustomLog logs/VietLUG_access_log commonDirectoryIndex index.htmlRewriteEngine onRewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}RewriteRule .* - [F](/VirtualHost) Thay () v i <> tr c và sau ch VirtualHost. Đ ng quên thay hàng đ u phía trên.ớ ướ ữ ừ ầ (VirtualHost 24.153.136.146:80)ServerAdmin [email protected] /N i/các/t p/tin/n m/trong/htdocsơ ậ ằServerName xn--dchthut-5p4c4j.vnlinux.orgErrorLog logs/dichthuat_error_logCustomLog logs/dichthuat_access_log commonDirectoryIndex index.html RewriteEngine onRewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}RewriteRule .* - [F](/VirtualHost)Thay () v i <> tr c và sau ch VirtualHost. Đ ng quên thay hàng đ u phía trên.ớ ướ ữ ừ ầ Làm y chang nh trên cho hai tên howto và i18n. Sau khi khai báo các hàng trên, b n ph i ư ạ ảkh i đ ng l i apache. ở ộ ạL u ý: nh ng dòng trên là nh ng khai báo căn b n trong httpd.conf. Tùy vào nhu c u ph c ư ữ ữ ả ầ ụv trang web mà b n r t có th c n thêm b t các giá tr tùy thíchụ ạ ấ ể ầ ớ ị N u b n đã khai báo trong DNS và apache đ y đ mà v n không th y các tên o ho t ế ạ ầ ủ ẫ ấ ả ạđ ng, r t có th b n ph i ch trong vòng m t ngày (ho c s m h n, ho c lâu h n) đ DNS ộ ấ ể ạ ả ờ ộ ặ ớ ơ ặ ơ ểrecords ch a nh ng thông tin b n v a thành l p đ c c p nh t. ứ ữ ạ ừ ậ ượ ậ ậMu n ki m tra ngay l p t c xem các tên o đã đ c thi t l p đúng ch a b n có th gõ ố ể ậ ứ ả ượ ế ậ ư ạ ểhttpd -S (hay apache -S) Bài vi t trên đã h ng d n cách thi t l p dns và apache c n thi t cho vi c s d ng tên o ế ướ ẫ ế ậ ầ ế ệ ử ụ ả
![Page 19: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/19.jpg)
d a vào tên (name-based virtual host). B n có th đ c thêm tài li u c a Apache t i ự ạ ể ọ ệ ủ ạ đây v iớ h ng d n cách s d ng tên o d a trên IP (IP-based virtual host) và các ví d ph c t p ướ ẫ ử ụ ả ự ụ ứ ạh nơ
Cài đ t Lighttpd v i PHP5 và MySQL trên CentOS 5.4ặ ớ Bài h ng d n này sẽ s d ng hostname là ướ ẫ ử ụ server1.example.com v i đ a ch IP là ớ ị ỉ192.168.0.100. B n thay đ i các giá tr này tùy theo c u hình h th ng c a t ch cạ ổ ị ấ ệ ố ủ ổ ứ
Cài đ t MySQL 5.0ặ
B c 1ướ : Tr c tiên ta cài đ t MySQL 5.0 b ng cách s d ng câu l nh sau:ướ ặ ằ ử ụ ệ
Mã:yum install mysql mysql-server
B c 2ướ : C u hình đ MySQl t kh i đ ng cùng v i h đi u hành và kh i đ ng MySQL cho ấ ể ự ở ộ ớ ệ ề ở ộphiên làm vi cệ
Mã:chkconfig --levels 235 mysqld on/etc/init.d/mysqld start
B c 3ướ : T o m t kh u cho tài kho n root c a MySQL (thay th ạ ậ ẩ ả ủ ế yourrootsqlpassword b ng m t kh u b n mu n s d ng)ằ ậ ẩ ạ ố ử ụ
Mã:mysqladmin -u root password yourrootsqlpasswordmysqladmin -h server1.example.com -u root password yourrootsqlpassword
Cài đ t Lighttpdặ
B c 1ướ : T i gói cài đ t Lighttpdả ặN u h th ng c a b n là x86_64:ế ệ ố ủ ạ
Mã:wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpmrpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpmN u h th ng c a b n là i386:ế ệ ố ủ ạ
Mã:
![Page 20: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/20.jpg)
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpmrpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
B c 2ướ : Ti n hành cài đ t Lighttpd ế ặ
Mã:yum install lighttpd
B c 3ướ : C u hình đ Lighttpd t kh i đ ng cùng v i h đi u hành và kh i đ ng Lighttpd ấ ể ự ở ộ ớ ệ ề ở ộcho phiên làm vi cệMã:chkconfig --levels 235 lighttpd on/etc/init.d/lighttpd start
B c 4ướ : M trình duy t và gõ ở ệ http://192.168.0.100
N i đang trang ch m c đ nh c a Lighttpd là ơ ủ ặ ị ủ /srv/www/lighttpd trên CentOS 5.4 (không có t p tin index nào hi n h u trong th m c này, đó là lý do t i sao trình duy t báo l i 404ậ ệ ữ ư ụ ạ ệ ỗ Not Found), và t p tin c u hình là /etc/lighttpd/lighttpd.conf.ậ ấ
Cài đ t PHP5ặ
Chúng ta áp d ng PHP5 làm vi c v i Lighttpd thông qua FastCGI. Vì th chúng ta cài đ t góiụ ệ ớ ế ặ lighttpd-fastcgi và php-cli:
Mã:yum install lighttpd-fastcgi php-cli
Configuring Lighttpd And PHP5
B c 1ướ : Đ kích ho y PHP5 trong Lighttpd, wb n ph i ch nh s a 2 t p tin, ể ạ ạ ả ỉ ử ậ /etc/php.ini và /etc/lighttpd/lighttpd.conf. Đ u tiên ta m t p tin ầ ở ậ /etc/php.ini và thêm dòng cgi.fix_pathinfo = 1 cu i t p tin:ở ố ậMã:[...]cgi.fix_pathinfo = 1B c 2ướ : Sau đó m ở /etc/lighttpd/lighttpd.conf và uncomment "mod_fastcgi", trong đo n server.modules:ạ
![Page 21: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/21.jpg)
Mã:[...]server.modules = (# "mod_rewrite",# "mod_redirect",# "mod_alias", "mod_access",# "mod_cml",# "mod_trigger_b4_dl",# "mod_auth",# "mod_status",# "mod_setenv", "mod_fastcgi",# "mod_proxy",# "mod_simple_vhost",# "mod_evhost",# "mod_userdir",# "mod_cgi",# "mod_compress",# "mod_ssi",# "mod_usertrack",# "mod_expire",# "mod_secdownload",# "mod_rrdtool", "mod_accesslog" )[...]B c 3ướ : Cũng trong t p tin lighttpd.conf, ta b d u ghi chú (#) m c ậ ỏ ấ ở ụ fastcgi.server, đ ng ồth i b o đ m r ng ờ ả ả ằ /tmp/php-fastcgi.socket đ c khai báo trong dòng ượ "socket":
Mã:[...]#### fastcgi module## read fastcgi.txt for more info## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.inifastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi" ) ) )[...]B c 4ướ : KH i đ ng l i d ch v Lighttpdở ộ ạ ị ụ
![Page 22: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/22.jpg)
Mã:/etc/init.d/lighttpd restartB c 5ướ : Ki m tra b ng cách t o t p tin ể ằ ạ ậ /srv/www/lighttpd/info.php v i n i dung:ớ ộMã:<?phpphpinfo();?>M trình duy t truy c p đ n đ a ch ở ệ ậ ế ị ỉ http://192.168.0.100/info.php
C u hình PHP5 h tr MySQLấ ỗ ợ
Đ PHP5 h tr MySQL, ta c n cài đ t gói ể ỗ ợ ầ ặ php-mysql. Bên c nh đó chúng ta cũng nên cài ạđ t thêm m t s gói khác b ng l nh:ặ ộ ố ằ ệ
Mã:yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpcKh i đ ng l i Lighttpd:ở ộ ạMã:/etc/init.d/lighttpd restartKi m tra l i b ng cách truy c p vào trang ể ạ ằ ậ http://192.168.0.100/info.php
Đ ng b d li u gi a các Node trong mô hình Web Clusterồ ộ ữ ệ ữ
I – Gi i thi u:ớ ệ
bài tr c, mình có trình bàyỞ ướ C u hình Web Clusterấ giúp tăng tính s n sàng cho h ẵ ệth ng ố Web Server c a chúng ta. Tuy nhiên, n u m t Node trong h th ng Cluster “ch t”, ủ ế ộ ệ ố ếsau m t th i gian sau Node đó “s ng” tr l i thì d li u trên Node không còn nh t quán ộ ờ ố ở ạ ữ ệ ấv i các Node còn l i n a!. Trong bài này, mình sẽ ti p t c trình bày v đ ng b d li u ớ ạ ữ ế ụ ề ồ ộ ữ ệgi a các Node trong mô hình Web Cluster.ữ
Yêu c u:ầ 2 Server làm Web Server v i d ch v httpd ( đây mình dùng CentOS 5.6)ớ ị ụ Ở Đã th c hi n ự ệ c u hình Web Clusterấ .
Chú ý: Bài này mình trình bày v đ ng b d li u ch a trên các th m c c a Web Server ề ồ ộ ữ ệ ứ ư ụ ủ(ví d : hình nh, t p tin âm thanh,…). Đ có đ c mô hình đ y đ h n, chúng ta có th ụ ả ệ ể ượ ẩ ủ ơ ểti n hành thi t l p đ ng b ế ế ậ ồ ộ C S D Liêuơ ở ữ c a các Web Server này, b n có th tham kh oủ ạ ể ả
![Page 23: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/23.jpg)
bài vi t ế Đ ng b d li u trên 2 Database Server s d ng MySQL Serverồ ộ ữ ệ ử ụ , s d ng kĩ ử ụthu t ậ MySQL Replication.II – Cài đ t gói rsync và test đ ng b :ặ ồ ộTrên c 2 Node, ti n hành cài đ t các gói ả ế ặ rsync#yum install rsyncT o m t user dùng đ 2 Node xác th c trong quá trình đăng nh p đ ng b d li u. ạ ộ ể ự ậ ồ ộ ữ ệ ỞNode1 mình t o m t user v i tên là ạ ộ ớ backup#root@node1# useradd backup #root@node1# passwd backup
Trên Node2 mình sẽ th đ ng b b ng tay đ xem các gói ử ồ ộ ằ ể rsync đã cài đ t đúng hay ch a.ặ ưroot@node2# rsync –avz –e ssh [email protected]:/var/www/html/ /var/www/html/Trong đó:
backup là user đã t o Node1.ạ ở 172.16.1.1 là IP c a Node1.ủ /var/www/html/ là 2 th m c c n đ ng b .ư ụ ầ ồ ộ
Đ ng b d li u t ồ ộ ữ ệ ừ Node1 qua Node2 thành công!. Ta ki m tra 2 th m c ể ư ụ/var/www/html/ ở Node1 và Node2 thì th y chúng có n i dung gi ng nhau.ấ ộ ố
III – T o SSH-Key và l p l ch t đ ng đ ng b :ạ ậ ị ự ộ ồ ộTrên Node2, ti n hành t o Keyế ạroot@node2# mkdir /root/rsync root@node2# ssh-keygen –t dsa –b 1024 –f /root/rsync/mirror-rsync-key
đây b n sẽ đ c yêu c u nh p Ở ạ ượ ầ ậ passphrase 2 l n. Hãy nh p ầ ậ passphrase tr ng c 2 l n!ắ ả ầ
Sau khi t o ạ Key xong, ti n hành chuy n Key này t i cho ế ể ớ Node1. Chúng ta sẽ đ a key vào ưm c ụ home c a user ủ backup đ c t o b c trênượ ạ ở ướroot@node2# scp /root/rsync/mirror-rsync-key.pub [email protected]:/home/backup
Tr l i ở ạ Node1, ta ti n hành chuy n qua thao tác trên user ế ể backup:backup@node1# mkdir ~/.ssh backup@node1# chmod 700 ~/.ssh backup@node1# mv ~/mirror-rsync-key.pub ~/,ssh/ backup@node1# cd ~/.ssh backup@node1 .ssh# touch authorized_keys backup@node1 .ssh# chmod 600 authorized_keys backup@node1 .ssh# cat mirror-rsync-key.pub >> authorized_keys
Ti n hành m file ế ở authorized_keys lên backup@node1 .ssh# vi authorized_keys
![Page 24: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/24.jpg)
Thêm vào tr c n i dung có s n c a fileướ ộ ẵ ủ authorized_keys n i dung sau:ộcommand="/home/backup/rsync/checkrsync",from="172.16.1.2",no-port-forwarding,no-X11-forwarding,no-pty ssh-dssChú ý: Có kho ng tr ng gi a đo n m i thêm v i đo n n i dung có s n c a file ả ắ ữ ạ ớ ớ ạ ộ ẵ ủ
authorized_keys nhé .
Đ đ m b o h th ng đ c an toàn khi th c các l nh b i user ể ả ả ệ ố ượ ự ệ ở backup. Chúng ta nên c m ất t các các câu l nh ngo i tr ấ ệ ạ ừ rsync trên user này.backup@node1# ~/rsync backup@node1# vi ~/rsync/checkrsyncT o thêm n i dung d i đây cho file ạ ộ ướ checkrsynccase "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\'*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac
Sau đó l u file ư checkrsync l i và ạ chmod nó ở 700#chmod 700 ~/rsync/checkrsync
Bây gi , trên Node2 ta sẽ ki m tra l i s đ ng b d li u đăng nh p b i user ờ ể ạ ự ồ ộ ữ ệ ậ ở backup có sử
![Page 25: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/25.jpg)
d ng ụ SSH-Keyroot@node2# rsync -avz --delete --exclude=**/stats --exclude=**/error -e "ssh -i /root/rsync/mirror-rsync-key" [email protected]:/var/www/html/ /var/www/html/Trong đó:
delete: Khi file đ c xóa trên Node1 thì nó cũng sẽ đ c xóa trên Node2ượ ượ exclude: Lo i ra các th m c không mu n đ ng b . Ví d trên mình lo i ra các ạ ư ụ ố ồ ộ ụ ở ạ
th m c nh /stats và /errorư ụ ư
N u có k t qu đ ng b đ i lo i nh hình trên thì b n đã c u hình thành công!. Bây gi ta ế ế ả ồ ộ ạ ạ ư ạ ấ ờsẽ ti n hành l p l ch đ ế ậ ị ể Node2 t đ ng đ ng b d li u gi ng nh ự ộ ồ ộ ữ ệ ố ư Node1.root@node2# crontab –eThêm vào n i dung nh bên d i r i ti n hành l u l i:ộ ư ướ ồ ế ư ạ*/1 * * * * /usr/bin/rsync -azq --delete --exclude=**/stats --exclude=**/error -e "ssh -i /root/rsync/mirror-rsync-key" [email protected]:/var/www/html/ /var/www/html/
đo n l nh trên mình đã l p l ch Node2 c m t phút thì nó l i ti n hành đ ng b d li u Ở ạ ệ ậ ị ứ ộ ạ ế ồ ộ ữ ệv i Node1. Chúng ta ti n hành ki m tra đ n gi n nh sau.ớ ế ể ơ ả ưTrên Node1, t o m t file ạ ộ kiemtra.txt: root@node1# touch /var/www/html/kiemtra.txt
Trên Node2, ta ti n hành ki m tra l i th m c ế ể ạ ư ụ /var/www/html/ thì th y file ấ kiemtra.txt
đã xu t hi n ấ ệ
IV – Đ ng b d li u qua l i gi a 2 Node:ồ ộ ữ ệ ạ ữ các b c c u hình trên, mình đã thi t l p đ c quá trình đ ng b d li u t Ở ướ ấ ế ậ ượ ồ ộ ữ ệ ừ Node1 t i ớ
Node2. Ki u thi t l p này nh m m c đích ể ế ậ ằ ụ backup l i d li u ạ ữ ệ ở Node chính. Tuy nhiên, n u ế Node1 b ch t, ị ế Node2 thay th đ đáp ng nhu c u Web cho Client và khi ế ể ứ ầ Node1 đ c ph c h i thì d li u c a chúng ta sẽ không còn nh t quán n a! (d li u không th ượ ụ ồ ữ ệ ủ ấ ữ ữ ệ ểđ ng b t ồ ộ ừ Node2 t i Node1ớ ). Đ kh c ph c đi u này, chúng ta sẽ ti n hành t ng t ể ắ ụ ề ế ươ ựnh trên, nh ng ng c l i đ i v i 2 Node! ư ư ượ ạ ố ớ Node1 sẽ đ ng b d li u trên ồ ộ ữ ệ Node2!Mô hình Backup: Node1 -----> Node2Mô hình đ ng b trên 2 Nodeồ ộ : Node1 <---------> Node2
C u hình Linux Virtual Server via Direct Routingấ
bài vi t Ở ế C u hình Web Clusterấ mình đã trình bày v cách t o ra c m Web Server s ề ạ ụ ửd ng heartbeat nh m tăng tính s n sàng cho h th ng Website. Thông th ng, nh ng h ụ ằ ẵ ệ ố ườ ữ ệth ng Cluster sẽ kèm theo kh năng ố ả đ ng b d li u gi a các nodeồ ộ ữ ệ ữ và c n b ng t i. Trong ầ ằ ảbài vi t này, mình sẽ trình bày cách c u hình c m Web Server v i kh năng c n b ng t i ế ấ ụ ớ ả ầ ằ ả
![Page 26: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/26.jpg)
s d ng LVS – Direct Routing.ử ụ
I – Mô hình:
II – Cài đ t:ặCài đ t heartbeat và các gói c n thi t b ng l nh sau (ch y 2 l n)ặ ầ ế ằ ệ ạ ầ# yum -y install libnet heartbeat-* ipvsadmKi m tra các gói cài đ t đã đ hay ch aể ặ ủ ư# rpm –qa | grep heartbeat
III - C u hình trên 2 Load Balancing Server:ấT o file ạ authkeys# vi /etc/ha.d/authkeysThêm vào 2 dòng sauauth 1 1 sha1 123456
Sau đó chmod l i file nàyạ# chmod 600 /etc/ha.d/authkeysT o file ạ ha.cf# vi /etc/ha.d/ha.cfThêm vào n i dung sau:ộdebugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 # tien ich dung cho syslog hoac logger keepalive 1 # thoi gian kiem tra giua cac heartbeat deadtime 10 # thoi gian quyet dinh mot host da die hay chua? warntime 5 # thoi gian de dua ra canh bao initdead 120 # thoi gian chet dau tien udpport 694 # Port de gui tin hieu heartbeat bcast eth1 # Card mang de gui tin hieu heartbeat auto_failback off # tu dong gui tai nguyen sai tro lai node chinh node lb1.khanh.com.vn # ten load balancer 1 node lb2.khanh.com.vn # ten load balancer 2 respawn hacluster /usr/lib/heartbeat/ipfail
T o file ạ haresources# vi /etc/ha.d/haresources
![Page 27: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/27.jpg)
Thêm vào n i dungộlb1.khanh.com.vn \ ldirectord::ldirectord.cf \ LVSSyncDaemonSwap::master \ IPaddr2::192.168.10.100/24/eth0/192.168.10.255
Trong đó: lb1.khanh.com.vn: là node chính (master). ldirectord: là d ch v c u hình load balancing.ị ụ ấ 192.168.10.100: là đ a ch IP o.ị ỉ ả
T o file ạ ldirectord.cf# vi /etc/ha.d/ldirectord.cf Thêm vào n i dungộlogfile="/var/log/ldirectord.log" checktimeout=15 checkinterval=5 autoreload=yes quiescent=no virtual=192.168.10.100:80 fallback=127.0.0.1:80 real=192.168.10.3:80 gate real=192.168.10.4:80 gate service=http request="check.html" receive="alive" scheduler=lblc persistent=600 protocol=tcp checktype=negotiateTrong đó:
192.168.10.100: là đ a ch IP o.ị ỉ ả 192.168.10.3 và 192.168.10.4: là đ a ch IP c a 2 Web Server.ị ỉ ủ http: là d ch v c n c u hình load balancing.ị ụ ầ ấ check.html: là t p tin mà ldirectord ki m tra Web Server còn s ng hay không?ệ ể ố alive: là n i dung ch a trên file check.html.ộ ứ scheduler: Có th set giá tr là ể ị rr ho c ặ lblc đ dùng cho d ch v httpể ị ụ
B t tính năng chuy n h ng gói tin:ậ ể ướ# vi /etc/sysctl.confS a ử net.ipv4.ip_forward = 0 thành net.ipv4.ip_forward = 1Đ thay đ i có hi u l c ta th c hi nể ổ ệ ự ự ệ# sysctl –p
![Page 28: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/28.jpg)
Chú ý: Vì n i dung các t p tin c u hình trên 2 LB Server là gi ng nhau nên chúng ta ch c nộ ệ ấ ố ỉ ầ c u hình trên LB1 sau đó dùng l nh đ copy qua LB2.ấ ệ ể# scp /etc/ha.d/* 192.168.10.2:/etc/ha.d/
IV - C u hình trên 2 Web Server:ấTrên 2 Web Server ta th c hi n cài đ t d ch v ự ệ ặ ị ụ httpd và các d ch v kèm theo khác cho ị ụvi c ch y ng d ng web (thao kh o:ệ ạ ứ ụ ả Cài đ t Apache và PHP trên CentOSặ )Sau khi đã cài đ t d ch v httpd, ta cài đ t thêm 2 gói sau (download file đính kèm).ặ ị ụ ặ ở# rpm -ivh arptables_jf-0.0.8-8.i386.rpm # rpm –ivh arptables-noarp-addr-0.99.2-1.rh.el.um.1.noarch.rpmT o thêm 1 card loopback oạ ả# vi /etc/sysconfig/network-scripts/ifcfg-lo:0Thêm vào n i dung:ộDEVICE=lo:0 IPADDR=192.168.10.100 NETMASK=255.255.255.255 NETWORK=192.168.10.0 BROADCAST=192.168.10.255 ONBOOT=yes NAME=loopbackTrong đó 192.168.10.100 là đ a ch IP oị ỉ ảTh c hi n ch n ARP trên IP o c a 2 Web Server:ự ệ ặ ả ủ# /etc/init.d/arptables_jf stop # /usr/sbin/arptables-noarp-addr 192.168.10.100 start # /etc/init.d/arptables_jf save # /etc/init.d/arptables_jf start # /sbin/chkconfig --level 2345 arptables_jf on
T i sao l i ph i ch n ARP? Tham kh o ạ ạ ả ặ ả t i đâyạ .Ti p đó, ta kh i đ ng l i d ch v m ng và d ch v httpdế ở ộ ạ ị ụ ạ ị ụ# service network restart # service httpd restartĐ test k t qu , ta có th t o ra các trang web đ n gi n trên 2 Web Server nh sau:ể ế ả ể ạ ơ ả ưTrên Web Server 1:# echo " <h1> Web Server 1" > /var/www/html/index.html # echo "alive" >/var/www/html/check.htmlTrên Web Server 2:# echo " <h1> Web Server 2" > /var/www/html/index.html # echo "alive" >/var/www/html/check.htmlV – Ki m tra:ểTrên 2 LB Server ta th c hi n:ự ệ# chkconfig ldirectord off
![Page 29: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/29.jpg)
# chkconfig heartbeat on # service heartbeat restart # service ldirectord stopDùng l nh ệ ipvsadm đ ki m tra tr ng thái c a 2 Web Serverể ể ạ ủTrên LB1: # ipvsadm -l -n
Trên LB2: # ipvsadm -l -n
đây LB2 là Slave nên l nhỞ ệ #ipvsadm -l -n sẽ không có k t qu tr v . Ch khi nào LB1 ế ả ả ề ỉch t thì LB2 m i đ ng ra ki m soát/phân gi i 2 Web Server.ế ớ ứ ể ảKi m tra Load Balancing:ểT Client, ta dùng trình duy t truy c p vào đ a ch IP o, k t qu trang web n m trên Web ừ ệ ậ ị ỉ ả ế ả ằServer 2 đ c tr v .ượ ả ề
m t máy tính khác v i thao tác t ng t , đ c k t qu trang web t Web Server 1 tr Ở ộ ớ ươ ự ượ ế ả ừ ảv .ề
Ki m tra Cluster:ểD ng d ch v heartbeat trên LB1 ừ ị ụ# service heartbeat stop
D ng d ch v httpd trên Web Server 2 ừ ị ụ# service httpd stop
Ki m tra IP o và k t qu phân gi i tr ng thái IP trên LB2 đ c k t qu nh hình đ i.ể ả ế ả ả ạ ượ ế ả ư ướ
Dùng trình duy t truy c p vào đ a ch IP o, k t qu v n vào đ c Website tr v t Web ệ ậ ị ỉ ả ế ả ẫ ượ ả ề ừServer 1
T p tin đính kèm:ệarptables_jf-0.0.8-8.i386.rpm (92,04 kb) [Downloads: 180]arptables-noarp-addr-0.99.2-1.rh.el.um.1.noarch.rpm (10,46 kb) [Downloads: 175]
theo: khanh.com.vn
![Page 30: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/30.jpg)
Mô hình nhi u web server s d ng Nginx reverse Proxyề ử ụ
Đ xây d ng h th ng web server ph c v cho hàng ngàn l t truy c p cùng lúc, b n có ể ự ệ ố ụ ụ ượ ậ ạth s d ng gi i pháp Nginx reverse Proxy ho c Loadbalancing nhi u webserver v i nhau ể ử ụ ả ặ ề ớđ webserver có kh năng ch u t i cao và đáp đ ng hàng ngàn l t truy c p đ ng th i.ể ả ị ả ứ ượ ậ ồ ờ
1. Mô hình Tham kh oả
![Page 31: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/31.jpg)
2. Xây d ng Nginx Reverse Proxyự
http://www.cyberciti.biz/tips/using-nginx-as-reverse-proxy.html
2.1 Có th xây d ng gi i pháp loadbalance gi a các web server thay th cho reverse ể ự ả ữ ếproxy
![Page 32: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/32.jpg)
http://quantrinet.com/forum/showthread.php?t=9591
3. Xây d ng web server , Đ ng b d li u gi a các web serverự ồ ộ ữ ệ ữ
http://quantrinet.com/forum/showthread.php?t=8011
Theo mô hình trên có th xây d ng thêm 1 m ng đ đ ng đ d li u gi a các web server .ể ự ạ ể ồ ộ ữ ệ ữ
4. Xây d ng database mysql replicationự
https://www.howtoforge.com/mysql_master_master_replication
Cài đ t loadbalancer cho nginx Reverse Proxyặ
Install nginx As Reverse Proxy Load Balancer
http://www.cyberciti.biz/faq/rhel-linux-install-nginx-as-reverse-proxy-load-balancer/
![Page 33: Làm Reverse Proxy Với Linux](https://reader036.vdocuments.net/reader036/viewer/2022062313/563db7e7550346aa9a8f0482/html5/thumbnails/33.jpg)
https://www.howtoforge.com/high-availability-load-balancer-pound-keepalived-debian-etchhttps://www.packtpub.com/register