làm reverse proxy với linux

42
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ệ

Upload: son-tran-hong-nam

Post on 03-Dec-2015

268 views

Category:

Documents


2 download

DESCRIPTION

Làm reverse proxy với Linux.

TRANSCRIPT

Page 1: Làm Reverse Proxy Với Linux

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

đ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

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

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

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

đ 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

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

[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

[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

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

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

[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

[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

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

[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

[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

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

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

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

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

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

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

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

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

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

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

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

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

# 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

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

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

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://www.howtoforge.com/high-availability-load-balancer-pound-keepalived-debian-etchhttps://www.packtpub.com/register