{"id":2149,"date":"2022-03-07T18:08:51","date_gmt":"2022-03-07T11:08:51","guid":{"rendered":"https:\/\/www.marketenterprise.vn\/blog\/?p=2149"},"modified":"2022-03-07T18:26:14","modified_gmt":"2022-03-07T11:26:14","slug":"gioi-thieu-ve-nginx-va-apache","status":"publish","type":"post","link":"https:\/\/www.marketenterprise.vn\/blog\/gioi-thieu-ve-nginx-va-apache.html","title":{"rendered":"Gi\u1edbi thi\u1ec7u v\u1ec1 Apache v\u00e0 Nginx"},"content":{"rendered":"<p><span>Trong b\u00e0i vi\u1ebft h\u00f4m nay m\u00ecnh s\u1ebd gi\u1edbi thi\u1ec7u s\u01a1 l\u01b0\u1ee3c v\u1ec1 Apache v\u00e0 Nginx, \u01b0u \u0111i\u1ec3m c\u1ee7a t\u1eebng lo\u1ea1i, s\u1ef1 kh\u00e1c nhau v\u1ec1 c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng v\u00e0 c\u00e1ch c\u00e0i \u0111\u1eb7t t\u1eebng web server n\u00e0y nh\u00e9.<\/span><\/p>\r\n<h2>Gi\u1edbi thi\u1ec7u v\u1ec1 Apache (Apache HTTP Server)<\/h2>\r\n<p><strong>Apache HTTP Server<\/strong><span>\u00a0l\u00e0 m\u1ed9t web server m\u00e3 ngu\u1ed3n m\u1edf \u0111a n\u1ec1n t\u1ea3ng \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd b\u1edfi\u00a0<\/span><a href=\"https:\/\/www.apache.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Apache Software Foundation<\/a><span>\u00a0v\u00e0 \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n,\u00a0<\/span><span>maintained\u00a0b\u1edfi c\u1ed9ng \u0111\u1ed3ng m\u1edf l\u1eadp tr\u00ecnh vi\u00ean d\u01b0\u1edbi ASF. N\u00f3 c\u00f2n \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn v\u1edbi t\u00ean g\u1ecdi\u00a0<strong>Httpd<\/strong>\u00a0hay\u00a0<strong>Apache.\u00a0<\/strong>Th\u01b0\u1eddng \u0111\u01b0\u1ee3c tri\u1ec3n khai tr\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh linux, apache \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 tri\u1ec3n khai \u0111\u1ebfn 46% trang web tr\u00ean to\u00e0n th\u1ebf gi\u1edbi. Ngo\u00e0i ra, n\u00f3 c\u00f2n l\u00e0 th\u00e0nh ph\u1ea7n quan tr\u1ecdng c\u1ee7a\u00a0<strong>LAMP Stack<\/strong>\u00a0bao g\u1ed3m\u00a0<strong>Linux, Apache, PHP, MySql<\/strong>.<\/span><\/p>\r\n<h2>Gi\u1edbi thi\u1ec7u v\u1ec1 Nginx<\/h2>\r\n<p><span>Nginx l\u00e0 m\u1ed9t web server \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh v\u00e0o n\u0103m 2004 b\u1edfi Igor Sysoev, ng\u00e0y nay n\u00f3 \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n c\u00f2n h\u01a1n c\u1ea3 l\u00e0 m\u1ed9t web server. Kh\u1edfi \u0111i\u1ec3m, nginx \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng nh\u01b0 l\u00e0 m\u1ed9t ph\u1ea7n b\u1ed5 sung c\u1ee7a apache. N\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u1eed l\u00fd c\u00e1c file t\u0129nh (static file), ng\u00e0y nay, n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n m\u1ed9t c\u00e1ch ho\u00e0n thi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 m\u00e0 m\u1ed9t web server c\u1ea7n th\u1ef1c hi\u1ec7n. Ngo\u00e0i ra, nginx c\u00f2n \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 l\u00e0m\u00a0<\/span><strong>reverse proxy, load balancer, mail proxy<\/strong><span>\u00a0v\u00e0\u00a0<\/span><strong>HTTP caching<\/strong><span>.<\/span><\/p>\r\n<p><span>C\u1ea3 nginx v\u00e0 apache \u0111\u00e3 tr\u1edf th\u00e0nh hai web server th\u00f4ng d\u1ee5ng nh\u1ea5t tr\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh linux hi\u1ec7n nay. C\u00f9ng v\u1edbi nhau, ch\u00fang \u0111\u00e3 \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 tri\u1ec3n khai ph\u1ee5c v\u1ee5 h\u01a1n 50% trang web tr\u00ean to\u00e0n th\u1ebf gi\u1edbi.<\/span><\/p>\r\n<h2>So s\u00e1nh Apache vs Nginx<\/h2>\r\n<p>S\u1ef1 kh\u00e1c bi\u1ec7t l\u1edbn nh\u1ea5t gi\u1eefa<span>\u00a0<\/span><strong>Nginx<\/strong><span>\u00a0<\/span>v\u00e0<span>\u00a0<\/span><strong>Apache<\/strong><span>\u00a0<\/span>l\u00e0 \u1edf c\u00e1ch thi\u1ebft k\u1ebf c\u1ea5u tr\u00fac c\u1ee7a ch\u00fang. Apache s\u1eed d\u1ee5ng\u00a0<span>process-driven, t\u1ea1o ra m\u1ed9t\u00a0<strong>thread<\/strong>\u00a0m\u1edbi cho m\u1ed7i request. Nginx th\u00ec kh\u00e1c, nginx d\u00f9ng c\u1ea5u tr\u00fac\u00a0<strong>event-driven<\/strong>\u00a0\u0111\u1ec3 x\u1eed l\u00fd nhi\u1ec1u request v\u1edbi ch\u1ec9 m\u1ed9t\u00a0<strong>thread*<\/strong>.<\/span><\/p>\r\n<p>*<strong>Thread:<span>\u00a0<\/span><\/strong><span>m\u00f4\u0323t thread, hay co\u0300n go\u0323i la\u0300 \u201clu\u00f4\u0300ng\u201d, la\u0300 m\u00f4\u0323t \u0111\u01b0\u01a1\u0300ng d\u00e2\u0303n th\u01b0\u0323c thi trong m\u00f4\u0323t ti\u00ea\u0301n tri\u0300nh. M\u00f4\u0323t ti\u00ea\u0301n tri\u0300nh co\u0301 th\u00ea\u0309 ch\u01b0\u0301a nhi\u00ea\u0300u thread.<\/span><br \/>\u0110\u00ea\u0309 bi\u00ea\u0301t \u0111\u01b0\u01a1\u0323c s\u01b0\u0323 kha\u0301c bi\u00ea\u0323t gi\u01b0\u0303a Nginx va\u0300 Apache, chu\u0301ng ta ha\u0303y cu\u0300ng \u0111i qua m\u00f4\u0323t s\u00f4\u0301 so sa\u0301nh d\u01b0\u01a1\u0301i \u0111\u00e2y.<\/p>\r\n<h3>Basic Architecture<\/h3>\r\n<p>Khi no\u0301i \u0111\u00ea\u0301n Nginx va\u0300 Apache, s\u01b0\u0323 kha\u0301c bi\u00ea\u0323t c\u01a1 ba\u0309n gi\u01b0\u0303a ca\u0309 hai la\u0300 v\u00ea\u0300 thi\u00ea\u0301t k\u00ea\u0301 ki\u00ea\u0301n tru\u0301c cu\u0309a chu\u0301ng. Nghi\u0303a la\u0300 chu\u0301ng kha\u0301c nhau v\u00ea\u0300 ca\u0301ch x\u01b0\u0309 ly\u0301 k\u00ea\u0301t n\u00f4\u0301i (connections), l\u01b0u l\u01b0\u01a1\u0323ng truy c\u00e2\u0323p (traffic), ca\u0301ch chu\u0301ng pha\u0309n \u01b0\u0301ng (respond) v\u01a1\u0301i ca\u0301c \u0111i\u00ea\u0300u ki\u00ea\u0323n l\u01b0u l\u01b0\u01a1\u0323ng kha\u0301c nhau (traffic conditions).<\/p>\r\n<p>Apache ti\u00ea\u0301p c\u00e2\u0323n theo ph\u01b0\u01a1ng h\u01b0\u01a1\u0301ng\u00a0<span><strong>process-driven approach<\/strong>. Nginx thi\u0300 la\u0323i theo h\u01b0\u01a1\u0301ng\u00a0<strong>event-driven architecture<\/strong>.<\/span><\/p>\r\n<h4>Apache<\/h4>\r\n<ul>\r\n<li>Ti\u00ea\u0301p c\u00e2\u0323n theo h\u01b0\u01a1\u0301ng ti\u00ea\u0301n tri\u0300nh (Process Driven Approach )<\/li>\r\n<li>Ta\u0323o m\u01a1\u0301i m\u00f4\u0323t thread cho m\u00f4\u0303i request.<\/li>\r\n<\/ul>\r\n<p><strong>Apache<\/strong><span>\u00a0<\/span>ti\u00ea\u0301p c\u00e2\u0323n theo h\u01b0\u01a1\u0301ng multi-threaded. No\u0301 cung c\u00e2\u0301p m\u00f4\u0323t b\u00f4\u0323 ca\u0301c modules x\u01b0\u0309 ly\u0301 r\u00e2\u0301t \u0111a da\u0323ng. Ca\u0301c modules na\u0300y v\u00ea\u0300 c\u01a1 ba\u0309n bao g\u00f4\u0300m 3 loa\u0323i thu\u00e2\u0323t toa\u0301n x\u01b0\u0309 ly\u0301 request. M\u00f4\u0303i ca\u0301i se\u0303 \u0111a\u0301p \u01b0\u0301ng nhu c\u00e2\u0300u cu\u0309a ca\u0301c ma\u0301y chu\u0309 (server) kha\u0301c nhau.<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2151 size-medium\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02183800\/apache-request-handling.png\" alt=\"apache-request-handling\" width=\"1024\" height=\"400\" \/><\/p>\r\n<p><strong>MPMs (Multi-Processing Modules)<\/strong>\u00a0cung c\u00e2\u0301p m\u00f4\u0323t ki\u00ea\u0301n tru\u0301c linh hoa\u0323t \u0111\u00ea\u0309 l\u01b0\u0323a cho\u0323n ca\u0301c k\u00ea\u0301t n\u00f4\u0303i kha\u0301c nhau va\u0300 ca\u0301c thu\u00e2\u0323t toa\u0301n x\u01b0\u0309 ly\u0301 kha\u0301c nhau. MPMs g\u00f4\u0300m 3 loa\u0323i chi\u0301nh la\u0300:<\/p>\r\n<ul>\r\n<li>Process (Pre-fork) MPM.<\/li>\r\n<li>Worker MPM.<\/li>\r\n<li>Event MPM.<\/li>\r\n<\/ul>\r\n<p>Phi\u00ean ba\u0309n cu\u0303 cu\u0309a Apache (2.2) s\u01b0\u0309 du\u0323ng mpm_worker, mpm_prefork va\u0300 mod_php. L\u00ean \u0111\u00ea\u0301n phi\u00ean ba\u0309n Apache (2.4) \u0111\u01b0\u01a1\u0323c c\u00e2\u0301u hi\u0300nh \u0111\u00ea\u0309 s\u01b0\u0309 du\u0323ng mpm_event, php-fpm.<\/p>\r\n<p>M\u0103\u0323c \u0111i\u0323nh, Apache 2.2 \u0111\u01b0\u01a1\u0323c c\u00e2\u0301u hi\u0300nh v\u01a1\u0301i Pre-fork (mpm_prefork). No\u0301 tra\u0309 v\u00ea\u0300 1 t\u00e2\u0323p ca\u0301c processes, trong \u0111o\u0301 m\u00f4\u0303i process phu\u0323c vu\u0323 cho m\u00f4\u0323t request ri\u00eang bi\u00ea\u0323t ta\u0323i 1 th\u01a1\u0300i \u0111i\u00ea\u0309m. No\u0301i ca\u0301ch kha\u0301c, Apache se\u0303 ta\u0323o ra m\u00f4\u0323t thread m\u01a1\u0301i \u0111\u00ea\u0309 x\u01b0\u0309 ly\u0301 m\u00f4\u0303i request.<\/p>\r\n<p><span>Vi\u0300 v\u00e2\u0323y, v\u01a1\u0301i thi\u00ea\u0301t k\u00ea\u0301 ki\u00ea\u0301n tru\u0301c na\u0300y, Apache co\u0301 th\u00ea\u0309 d\u00e2\u0303n \u0111\u00ea\u0301n vi\u00ea\u0323c ti\u00eau thu\u0323 ta\u0300i nguy\u00ean l\u01a1\u0301n, do \u0111o\u0301 co\u0301 th\u00ea\u0309 d\u00e2\u0303n \u0111\u00ea\u0301n ca\u0301c v\u00e2\u0301n \u0111\u00ea\u0300 v\u01a1\u0301i ma\u0301y chu\u0309.<\/span><\/p>\r\n<h4>Nginx<\/h4>\r\n<ul>\r\n<li>S\u01b0\u0309 du\u0323ng ph\u01b0\u01a1ng pha\u0301p h\u01b0\u01a1\u0301ng s\u01b0\u0323 ki\u00ea\u0323n (Event-Driven approach).<\/li>\r\n<li>X\u01b0\u0309 ly\u0301 nhi\u00ea\u0300u request v\u01a1\u0301i chi\u0309 m\u00f4\u0323t thread.<\/li>\r\n<\/ul>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2152 size-medium\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02184746\/nginx-event-driven.png\" alt=\"nginx-event-driven\" width=\"1024\" height=\"565\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02184746\/nginx-event-driven-300x166.png 300w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02184746\/nginx-event-driven-768x425.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\r\n<p><span>Nginx s\u01b0\u0309 du\u0323ng c\u00e2\u0301u tru\u0301c h\u01b0\u01a1\u0301ng s\u01b0\u0323 ki\u00ea\u0323n va\u0300 x\u01b0\u0309 ly\u0301 ca\u0301c request kh\u00f4ng \u0111\u00f4\u0300ng b\u00f4\u0323. No\u0301 \u0111\u01b0\u01a1\u0323c thi\u00ea\u0301t k\u00ea\u0301 s\u01b0\u0309 du\u0323ng thu\u00e2\u0323t toa\u0301n x\u01b0\u0309 ly\u0301 k\u00ea\u0301t n\u00f4\u0301i theo h\u01b0\u01a1\u0301ng s\u01b0\u0323 ki\u00ea\u0323n kh\u00f4ng ch\u0103\u0323n (non-blocking). Do \u0111o\u0301, ti\u00ea\u0301n tri\u0300nh cu\u0309a no\u0301 co\u0301 th\u00ea\u0309 x\u01b0\u0309 ly\u0301 ha\u0300ng nga\u0300n k\u00ea\u0301t n\u00f4\u0301i (request) trong 1 lu\u00f4\u0300ng x\u01b0\u0309 ly\u0301 (thread). V\u01a1\u0301i ca\u0301ch x\u01b0\u0309 ly\u0301 k\u00ea\u0301t n\u00f4\u0301i nh\u01b0 v\u00e2\u0323y cho phe\u0301p Nginx la\u0300m vi\u00ea\u0323c r\u00e2\u0301t nhanh va\u0300 ma\u0323nh v\u01a1\u0301i l\u01b0\u01a1\u0323ng ta\u0300i nguy\u00ean ha\u0323n ch\u00ea\u0301.<\/span><\/p>\r\n<p><span>Ta co\u0301 th\u00ea\u0309 th\u00e2\u0301y, \u01a1\u0309 ti\u00eau chi\u0301\u00a0<\/span><strong>Basic Architecture,<\/strong><span>\u00a0Nginx co\u0301 c\u00e2\u0301u tru\u0301c go\u0323n nhe\u0323 va\u0300 nhanh h\u01a1n so v\u01a1\u0301i Apache.<\/span><\/p>\r\n<h3>Performance<\/h3>\r\n<p><span>No\u0301i v\u00ea\u0300 Apache va\u0300 Nginx, ca\u0309 hai web servers tr\u00ean x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung ti\u0303nh (static content) va\u0300 n\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content) kha\u0301c nhau.<\/span><\/p>\r\n<h4>N\u00f4\u0323i dung ti\u0303nh (static content)<\/h4>\r\n<p><style>.table_border{border:1px solid #333}.table_border td{border:1px solid #333;padding:5px}<\/style><\/p>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li>X\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung ti\u0303nh s\u01b0\u0309 du\u0323ng file-based method.<\/li>\r\n<li>N\u00f4\u0323i dung ti\u0303nh (static content) ho\u0103\u0323c files th\u01b0\u01a1\u0300ng la\u0300 ca\u0301c ca\u0301c t\u00ea\u0323p \u0111\u01b0\u01a1\u0323c l\u01b0u tr\u01b0\u0303 tr\u00ean \u00f4\u0309 \u0111i\u0303a cu\u0309a ma\u0301y chu\u0309 (servers) nh\u01b0 ca\u0301c file css, js, hi\u0300nh a\u0309nh.<\/li>\r\n<li>Apache x\u01b0\u0309 ly\u0301 ca\u0301c n\u00f4\u0323i dung ti\u0303nh na\u0300y b\u0103\u0300ng ca\u0301ch s\u01b0\u0309 du\u0323ng file-based method. <span>Apache x\u01b0\u0309 ly\u0301 t\u00e2\u0301t ca\u0309 ca\u0301c request \u0111o\u0301 v\u01a1\u0301i chi phi\u0301 cao h\u01a1n so v\u1edbi Nginx. <\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li>V\u01a1\u0301i x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung ti\u0303nh, Nginx \u0111\u01b0\u01a1\u0323c x\u00ea\u0301p va\u0300o ha\u0323ng nh\u00e2\u0301t.<\/li>\r\n<li>V\u01a1\u0301i thi\u00ea\u0301t k\u00ea\u0301 ki\u00ea\u0301n tru\u0301c cu\u0309a mi\u0300nh, Nginx \u0111\u01b0\u01a1\u0323c trang bi\u0323 t\u00f4\u0301t h\u01a1n \u0111\u00ea\u0309 x\u01b0\u0309 ly\u0301 ta\u0309i. No\u0301 nhanh khi x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung ti\u0303nh. Khi th\u01b0\u0323c hi\u00ea\u0323n m\u00f4\u0323t ba\u0300i ki\u00ea\u0309m tra v\u01a1\u0301i h\u01a1n 1000 k\u00ea\u0301t n\u00f4\u0301i \u0111\u00f4\u0300ng th\u01a1\u0300i, Nginx th\u01b0\u0323c hi\u00ea\u0323n nhanh h\u01a1n 2.5 l\u00e2\u0300n so v\u01a1\u0301i Apache.<\/li>\r\n<li><span>Nginx x\u01b0\u0309 ly\u0301 ca\u0301c n\u00f4\u0323i dung ti\u0303nh (static content) ma\u0300 kh\u00f4ng c\u00e2\u0300n m\u00f4\u0323t b\u00ean th\u01b0\u0301 3 nh\u01b0\u00a0<\/span><strong>PHP.<span> <\/span><\/strong><span>\u0110i\u00ea\u0300u na\u0300y khi\u00ea\u0301n cho Nginx hoa\u0323t \u0111\u00f4\u0323ng co\u0301 hi\u00ea\u0323u qua\u0309 h\u01a1n va\u0300 i\u0301t t\u00f4\u0301n ta\u0300i nguy\u00ean h\u01a1n.<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2153 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02192927\/Static-content-comparison.png\" alt=\"Static-content-comparison\" width=\"568\" height=\"233\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02192927\/Static-content-comparison.png 568w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02192927\/Static-content-comparison-300x123.png 300w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/p>\r\n<h4>N\u00f4\u0323i dung \u0111\u00f4\u0323ng (Dynamic Content)<\/h4>\r\n<p><style>.table_border{border:1px solid #333}.table_border td{border:1px solid #333;padding:5px}<\/style><\/p>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li>X\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng trong ma\u0301y chu\u0309 (servers).<\/li>\r\n<li>Apache co\u0301 th\u00ea\u0309 x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content) trong chi\u0301nh ma\u0301y chu\u0309 web (web server) ma\u0300 kh\u00f4ng c\u00e2\u0300n phu\u0323 thu\u00f4\u0323c va\u0300o b\u00e2\u0301t ky\u0300 tha\u0300nh ph\u00e2\u0300n b\u00ean ngoa\u0300i na\u0300o.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li>Nginx kh\u00f4ng x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng.<\/li>\r\n<li>Nginx kh\u00f4ng th\u00ea\u0309 x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content) trong ma\u0301y chu\u0309 web (web server) nh\u01b0 Apache. T\u00e2\u0301t ca\u0309 requests v\u01a1\u0301i n\u00f4\u0323i dung \u0111\u00f4\u0323ng se\u0303 \u0111\u01b0\u01a1\u0323c chuy\u00ea\u0309n qua m\u00f4\u0323t ti\u00ea\u0301n tri\u0300nh b\u00ean ngoa\u0300i (nh\u01b0 php-fpm) \u0111\u00ea\u0309 th\u01b0\u0323c thi. Nginx se\u0303 ch\u01a1\u0300 n\u00f4\u0323i dung cu\u00f4\u0301i cu\u0300ng sau khi th\u01b0\u0323c thi \u0111\u01b0\u01a1\u0323c tra\u0309 v\u00ea\u0300 va\u0300 cung c\u00e2\u0301p no\u0301 tr\u01a1\u0309 v\u00ea\u0300 cho client.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>&nbsp;<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2154 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194101\/Nginx-performance.png\" alt=\"Nginx-performance\" width=\"852\" height=\"294\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194101\/Nginx-performance.png 852w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194101\/Nginx-performance-300x104.png 300w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194101\/Nginx-performance-768x265.png 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/p>\r\n<p>Nginx co\u0301 th\u00ea\u0309 x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng n\u00ea\u0301u \u0111\u01b0\u01a1\u0323c s\u01b0\u0309 du\u0323ng cu\u0300ng v\u01a1\u0301i x\u01b0\u0309 ly\u0301 <strong>SCGI <\/strong>va\u0300 <strong>FastCGI <\/strong>module.<\/p>\r\n<p>V\u01a1\u0301i m\u00f4\u0323t ba\u0300i ki\u00ea\u0309m tra hi\u00ea\u0323u qua\u0309 khi x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content) m\u00f4\u0303i gi\u00e2y, ta \u0111\u01b0\u01a1\u0323c k\u00ea\u0301t qua\u0309 nh\u01b0 sau:<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2155 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194451\/Dynamic-content-comparison.png\" alt=\"Dynamic-content-comparison\" width=\"537\" height=\"187\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194451\/Dynamic-content-comparison.png 537w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02194451\/Dynamic-content-comparison-300x104.png 300w\" sizes=\"auto, (max-width: 537px) 100vw, 537px\" \/><\/p>\r\n<p><span>V\u00ea\u0300\u00a0<\/span><strong>Performance,<span>\u00a0<\/span><\/strong><span>n\u00f4\u0323i dung ti\u0303nh (static content), Nginx x\u01b0\u0309 ly\u0301 hi\u00ea\u0323u qua\u0309 va\u0300 nhanh h\u01a1n Apache. N\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content), ca\u0309 hai co\u0301 m\u01b0\u0301c \u0111\u00f4\u0323 x\u01b0\u0309 ly\u0301 nh\u01b0 nhau.<\/span><\/p>\r\n<h3>OS Support<\/h3>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li>H\u00f4\u0303 tr\u01a1\u0323 t\u00e2\u0301t ca\u0309 ca\u0301c h\u00ea\u0323 th\u00f4\u0301ng Unix-like (Unix-like systems) bao g\u00f4\u0300m ca\u0309 Linux va\u0300 BSD.<\/li>\r\n<li>H\u00f4\u0303 tr\u01a1\u0323 tr\u00ean ca\u0309 h\u00ea\u0323 \u0111i\u00ea\u0300u ha\u0300nh MS-Windows.<\/li>\r\n<li><span>Apache cha\u0323y tr\u00ean t\u00e2\u0301t ca\u0309 ca\u0301c loa\u0323i Unix-like systems (Linux, BSD,\u2026) va\u0300 co\u0301 h\u00f4\u0303 tr\u01a1\u0323 \u0111\u00e2\u0300y \u0111u\u0309 tr\u00ean h\u00ea\u0323 \u0111i\u00ea\u0300u ha\u0300nh MS-Windows.<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li>H\u00f4\u0303 tr\u01a1\u0323 h\u00e2\u0300u h\u00ea\u0301t tr\u00ean t\u00e2\u0301t ca\u0309 ca\u0301c Unix-like systems.<\/li>\r\n<li>H\u00f4\u0303 tr\u01a1\u0323 m\u00f4\u0323t ph\u00e2\u0300n tr\u00ean h\u00ea\u0323 \u0111i\u00ea\u0300u ha\u0300nh MS-Windows.<\/li>\r\n<li><span>No\u0301 cha\u0323y tr\u00ean m\u00f4\u0323t s\u00f4\u0301 Unix-like systems hi\u00ea\u0323u \u0111a\u0323i va\u0300 co\u0301 h\u00f4\u0303 tr\u01a1\u0323 m\u00f4\u0323t ph\u00e2\u0300n tr\u00ean h\u00ea\u0323 \u0111i\u00ea\u0300u ha\u0300nh Windows. Nh\u01b0ng tr\u00ean h\u00ea\u0323 \u0111i\u00ea\u0300u ha\u0300nh Windows, hi\u00ea\u0323u n\u0103ng se\u0303 kh\u00f4ng ma\u0323nh nh\u01b0 tr\u00ean ca\u0301c n\u00ea\u0300n ta\u0309ng co\u0300n la\u0323i.<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>&nbsp;<\/p>\r\n<p><span>T\u01b0\u0300 \u0111\u00e2y ta co\u0301 th\u00ea\u0309 th\u00e2\u0301y, Apache \u0111\u01b0\u01a1\u0323c h\u00f4\u0303 tr\u01a1\u0323 tr\u00ean ca\u0301c n\u00ea\u0300n ta\u0309ng OS kha\u0301c nhau r\u00f4\u0323ng h\u01a1n Nginx.<\/span><\/p>\r\n<p>&nbsp;<\/p>\r\n<h3>C\u00e2\u0301u hi\u0300nh ph\u00e2n ta\u0301n (Distributed) \/ t\u00e2\u0323p trung (Centralized)<\/h3>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li><strong>Cho phe\u0301p c\u00e2\u0301u hi\u0300nh b\u00f4\u0309 sung tr\u00ean c\u01a1 s\u01a1\u0309 m\u00f4\u0303i th\u01b0 mu\u0323c (directory) th\u00f4ng qua ca\u0301c file .htaccess.<\/strong><\/li>\r\n<li><span>Ki\u00ea\u0301n tru\u0301c na\u0300y cho phe\u0301p ca\u0301c ng\u01b0\u01a1\u0300i du\u0300ng kh\u00f4ng co\u0301 quy\u00ea\u0300n chi\u0309nh s\u01b0\u0309a c\u00e2\u0301u hi\u0300nh chi\u0301nh cu\u0309a web servers co\u0301 th\u00ea\u0309 ki\u00ea\u0309m soa\u0301t m\u00f4\u0323t s\u00f4\u0301 ph\u00e2\u0300n nh\u00e2\u0301t \u0111i\u0323nh tr\u00ean website ma\u0300 kh\u00f4ng c\u00e2\u0300n c\u00e2\u0301p pha\u0301t quy\u00ea\u0300n chi\u0309nh s\u01b0\u0309a c\u00e2\u0301u hi\u0300nh web servers.<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li><strong>Kh\u00f4ng cho phe\u0301p c\u00e2\u0301u hi\u0300nh b\u00f4\u0309 sung.<\/strong><\/li>\r\n<li><span>Nginx kh\u00f4ng h\u00f4\u0303 tr\u01a1\u0323 c\u00e2\u0301u hi\u0300nh b\u00f4\u0309 sung, nh\u01b0ng \u0111i\u00ea\u0300u na\u0300y la\u0323i khi\u00ea\u0301n cho Nginx t\u0103ng th\u00eam hi\u00ea\u0323u su\u00e2\u0301t. B\u0103\u0300ng vi\u00ea\u0323c kh\u00f4ng h\u00f4\u0303 tr\u01a1\u0323 c\u00e2\u0301u hi\u0300nh th\u01b0 mu\u0323c, no\u0301 co\u0301 th\u00ea\u0309 x\u01b0\u0309 ly\u0301 request nhanh h\u01a1n Apache. No\u0301 kh\u00f4ng c\u00e2\u0300n pha\u0309i ti\u0300m ki\u00ea\u0301m ca\u0301c files .htaccess va\u0300 ph\u00e2n ti\u0301ch y\u00eau c\u00e2\u0300u t\u01b0\u0300 ng\u01b0\u01a1\u0300i du\u0300ng.<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>&nbsp;<\/p>\r\n<p><span>N\u00ea\u0301u ta xem xe\u0301t v\u00ea\u0300 m\u0103\u0323t c\u00e2\u0301u hi\u0300nh th\u01b0 mu\u0323c, Apache co\u0301 kha\u0309 n\u0103ng linh \u0111\u00f4\u0323ng cao h\u01a1n. Co\u0300n n\u00ea\u0301u xe\u0301t v\u00ea\u0300 t\u00f4\u0301c \u0111\u00f4\u0323 x\u01b0\u0309 ly\u0301, Nginx la\u0323i co\u0301 t\u00f4\u0301c \u0111\u00f4\u0323 x\u01b0\u0309 ly\u0301 nhanh h\u01a1n.<\/span><\/p>\r\n<h3>Ca\u0301ch di\u00ea\u0303n gia\u0309i request (Request Interpretation)<\/h3>\r\n<p><span>Nginx va\u0300 Apache co\u0301 ca\u0301ch x\u01b0\u0309 ly\u0301 va\u0300 di\u00ea\u0303n gia\u0309i request theo hai ca\u0301ch hoa\u0300n toa\u0300n kha\u0301c nhau. S\u01b0\u0323 kha\u0301c nhau na\u0300y khi\u00ea\u0301n cho chu\u0301ng tr\u01a1\u0309 n\u00ean \u0111\u00f4\u0323c nh\u00e2\u0301t.<\/span><\/p>\r\n<h4>Apache<\/h4>\r\n<p><strong>Passes File system location<\/strong><\/p>\r\n<p>Cung c\u00e2\u0301p kha\u0309 n\u0103ng gia\u0309i thi\u0301ch request nh\u01b0 la\u0300 m\u00f4\u0323t ta\u0300i nguy\u00ean v\u00e2\u0323t ly\u0301 tr\u00ean h\u00ea\u0323 th\u00f4\u0301ng t\u00ea\u0323p tin (file system location). No\u0301 chuy\u00ea\u0309n request d\u01b0\u01a1\u0301i da\u0323ng vi\u0323 tri\u0301 cu\u0309a t\u00ea\u0323p tin tr\u00ean h\u00ea\u0323 th\u00f4\u0301ng. Va\u0300 khi ta ta\u0323o ho\u0103\u0323c c\u00e2\u0301u hi\u0300nh m\u00f4\u0323t host a\u0309o (virtual host), Apache s\u01b0\u0309 du\u0323ng ca\u0301c kh\u00f4\u0301i th\u01b0 mu\u0323c (directory blocks) d\u01b0\u01a1\u0301i th\u01b0 mu\u0323c g\u00f4c (document root)<\/p>\r\n<p>Ca\u0301c tu\u0300y cho\u0323n theo kh\u00f4\u0301i th\u01b0 mu\u0323c (directory blocks) na\u0300y co\u0301 th\u00ea\u0309 \u0111\u01b0\u01a1\u0323c s\u01b0\u0309 du\u0323ng trong ca\u0301c files .htaccess \u0111\u00ea\u0309 ghi \u0111e\u0300 ca\u0301c ca\u0300i \u0111\u0103\u0323t g\u00f4\u0301c cu\u0309a m\u00f4\u0323t kh\u00f4\u0301i th\u01b0 mu\u0323c cu\u0323 th\u00ea\u0309.<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2156 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02200104\/apache.png\" alt=\"apache\" width=\"1024\" height=\"345\" \/><\/p>\r\n<h4>Nginx<\/h4>\r\n<p><strong>Passes URI to interpret requests<\/strong><\/p>\r\n<p>Nginx \u0111\u01b0\u01a1\u0323c ta\u0323o ra \u0111\u00ea\u0309 \u0111a\u0301p \u01b0\u0301ng \u0111\u01b0\u01a1\u0323c ca\u0309 hai nhu c\u00e2\u0300u la\u0300 m\u00f4\u0323t web server va\u0300 m\u00f4\u0323t\u00a0<span>reverse proxy server. \u0110\u00ea\u0309 \u0111a\u0301p \u01b0\u0301ng \u0111\u01b0\u01a1\u0323c ca\u0309 hai nhu c\u00e2\u0300u tr\u00ean, thi\u00ea\u0301t k\u00ea\u0301 ki\u00ea\u0301n tru\u0301c cu\u0309a Nginx chuy\u00ea\u0309n ca\u0301c request d\u01b0\u01a1\u0301i da\u0323ng URI thay vi\u0300 vi\u0323 tri\u0301 h\u00ea\u0323 th\u00f4\u0301ng t\u00ea\u0323p (file system locations) nh\u01b0 Apache.<\/span><\/p>\r\n<p><span>Nginx kh\u00f4ng ki\u00ea\u0309m tra ca\u0301c file h\u00ea\u0323 th\u00f4\u0301ng cho \u0111\u00ea\u0301n khi no\u0301 s\u0103\u0303n sa\u0300ng \u0111\u00ea\u0309 x\u01b0\u0309 ly\u0301 request. \u0110i\u00ea\u0300u na\u0300y gia\u0309i thi\u0301ch vi\u0300 sao no\u0301 kh\u00f4ng s\u01b0\u0309 du\u0323ng file .htaccess nh\u01b0 Apache.<\/span><\/p>\r\n<p><span>Chi\u0301nh vi\u0300 thi\u00ea\u0301t k\u00ea\u0301 \u0111\u00ea\u0309 x\u01b0\u0309 ly\u0301 request d\u01b0\u01a1\u0301i da\u0323ng URI cho phe\u0301p Nginx d\u00ea\u0303 da\u0300ng hoa\u0323t \u0111\u00f4\u0323ng v\u01a1\u0301i vai tro\u0300 la\u0300 m\u00f4\u0323t web server, m\u00f4\u0323t proxy server hay load balancer va\u0300 HTTP cache.<\/span><\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2157 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02200451\/nginx.png\" alt=\"nginx\" width=\"1024\" height=\"500\" \/><\/p>\r\n<div class=\"et_pb_module et_pb_text et_pb_text_10 et_pb_text_align_left et_pb_bg_layout_light\">\r\n<div class=\"et_pb_text_inner\">Trong m\u00f4\u0323t ba\u0300i ki\u00ea\u0309m tra v\u00ea\u0300 t\u00f4\u0301c \u0111\u00f4\u0323 truy\u00ea\u0300n ta\u0309i (transfer rate \u2013 t\u00f4\u0301c \u0111\u00f4\u0323 data g\u01b0\u0309i va\u0300 nh\u00e2\u0323n gi\u01b0\u0303a server va\u0300 client). Ta co\u0301 th\u00ea\u0309 th\u00e2\u0301y Nginx hoa\u0323t \u0111\u00f4\u0323ng nhi\u0309nh h\u01a1n.<\/div>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2158 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02200928\/transferrateapach3evsnginx.png\" alt=\"transferrateapach3evsnginx\" width=\"601\" height=\"398\" srcset=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02200928\/transferrateapach3evsnginx.png 601w, https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02200928\/transferrateapach3evsnginx-300x199.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/p>\r\n<\/div>\r\n<h3>Ca\u0301c Modules ti\u0301nh n\u0103ng (Feature Modules)<\/h3>\r\n<p><span>Ca\u0309 Nginx va\u0300 Apache \u0111\u00ea\u0300u cho phe\u0301p ca\u0301c ph\u00e2\u0300n m\u01a1\u0309 r\u00f4\u0323ng th\u00f4ng qua h\u00ea\u0323 th\u00f4\u0301ng Modules. Nh\u01b0ng ca\u0309 hai la\u0323i co\u0301 ca\u0301ch hoa\u0323t \u0111\u00f4\u0323ng cu\u0309a ri\u00eang mi\u0300nh.<\/span><\/p>\r\n<h4>Apache<\/h4>\r\n<p><strong>Co\u0301 60 Modules chi\u0301nh th\u01b0\u0301c co\u0301 th\u00ea\u0309 ca\u0300i \u0111\u0103\u0323t t\u01b0\u0323 \u0111\u00f4\u0323ng va\u0300 co\u0301 th\u00ea\u0309 b\u00e2\u0323t ho\u0103\u0323c t\u0103\u0301t.<\/strong><\/p>\r\n<p>Apache co\u0301 n\u00f4\u0323t b\u00f4\u0323 ti\u0301nh n\u0103ng phong phu\u0301, co\u0301 th\u00ea\u0309 ki\u0301ch hoa\u0323t b\u0103\u0300ng ca\u0301ch ca\u0300i \u0111\u0103\u0323t va\u0300 kh\u01a1\u0309i \u0111\u00f4\u0323ng m\u00f4\u0323t trong s\u00f4\u0301 60 modules chi\u0301nh th\u01b0\u0301c cu\u0309a no\u0301. Ngoa\u0300i co\u0301 co\u0300n co\u0301 r\u00e2\u0301t nhi\u00ea\u0300u ti\u0301nh n\u0103ng (modules) kh\u00f4ng chi\u0301nh th\u01b0\u0301c cu\u0309a no\u0301 \u0111\u01b0\u01a1\u0323c pha\u0301t tri\u00ea\u0309n va\u0300 co\u0301 th\u00ea\u0309 \u0111\u01b0\u01a1\u0323c ti\u0300m th\u00e2\u0301y tr\u00ean internet.<\/p>\r\n<p>Ca\u0301c modules cu\u0309a no\u0301 cho phe\u0301p ta co\u0301 th\u00ea\u0309 ca\u0300i \u0111\u0103\u0323t ho\u0103\u0323c g\u01a1\u0303 bo\u0309 m\u00f4\u0323t ca\u0301ch d\u00ea\u0303 da\u0300ng \u0111\u00ea\u0309 co\u0301 th\u00ea\u0309 \u0111a\u0301p \u01b0\u0301ng \u0111\u01b0\u01a1\u0323c ca\u0301c nhu c\u00e2\u0300u cu\u0309a chu\u0301ng ta. Ca\u0301c modules na\u0300y cu\u0303ng co\u0301 th\u00ea\u0309 b\u00e2\u0323t ho\u0103\u0323c t\u0103\u0301t.<\/p>\r\n<p>Tuy nhi\u00ean, du\u0300 Apache co\u0301 r\u00e2\u0301t nhi\u00ea\u0300u modules \u0111\u00ea\u0309 \u0111a\u0301p \u01b0\u0301ng nhu c\u00e2\u0300u cu\u0309a chu\u0301ng ta, nh\u01b0ng nhi\u00ea\u0300u trong s\u00f4\u0301 \u0111o\u0301 kh\u00f4ng \u0111\u01b0\u01a1\u0323c s\u01b0\u0309 du\u0323ng th\u01b0\u01a1\u0300ng xuy\u00ean.<\/p>\r\n<h4>Nginx<\/h4>\r\n<p><strong>S\u01b0\u0309 du\u0323ng ca\u0301c core modules pha\u0301t tri\u00ea\u0309n cu\u0309a b\u00ean th\u01b0\u0301 3, ta kh\u00f4ng th\u00ea\u0309 ca\u0300i \u0111\u0103\u0323t no\u0301 t\u01b0\u0323 \u0111\u00f4\u0323ng.<\/strong><\/p>\r\n<p>Nginx cho phe\u0301p ta l\u01b0\u0323a cho\u0323n va\u0300 bi\u00ean di\u0323ch (<span>compiled<\/span>) th\u00eam va\u0300o ca\u0301c plugin cu\u0309a b\u00ean th\u01b0\u0301 3. Kh\u00f4ng th\u00ea\u0309 ca\u0300i \u0111\u0103\u0323t t\u01b0\u0323 \u0111\u00f4\u0323ng. No\u0301 \u0111\u01b0\u01a1\u0323c xem la\u0300 an toa\u0300n h\u01a1n nhi\u00ea\u0300u so v\u01a1\u0301i Apache vi\u0300 ca\u0301c tha\u0300nh ph\u00e2\u0300n b\u00e2\u0301t ky\u0300 co\u0301 th\u00ea\u0309 \u0111\u01b0\u01a1\u0323c th\u00eam va\u0300o Apache.<\/p>\r\n<p>Cu\u0303ng nh\u01b0, Nginx co\u0301 th\u00ea\u0309 cung c\u00e2\u0301p t\u00e2\u0301t ca\u0309 ca\u0301c ch\u01b0\u0301c n\u0103ng chi\u0301nh (core features) cu\u0309a m\u00f4\u0323t web server ma\u0300 kh\u00f4ng c\u00e2\u0300n pha\u0309i hy sinh \u0111i ca\u0301c \u0111\u0103\u0323c \u0111i\u00ea\u0309m n\u00f4\u0309i b\u00e2\u0323t cu\u0309a mi\u0300nh la\u0300 go\u0323n nhe\u0323 va\u0300 hi\u00ea\u0323u su\u00e2\u0301t cao.<br \/>Ta co\u0301 th\u00ea\u0309 vi\u0301 von m\u00f4\u0323t chu\u0301t, Apache co\u0301 th\u00ea\u0309 \u0111\u01b0\u01a1\u0323c xem la\u0300 Microsoft Word va\u0300 Nginx la\u0300 notepad. Ta\u0323i sao la\u0323i no\u0301i th\u00ea\u0301, vi\u0300 Apache co\u0301 r\u00e2\u0301t nhi\u00ea\u0300u l\u01b0\u0323a cho\u0323n \u0111\u00ea\u0309 phu\u0323c vu\u0323 nhu c\u00e2\u0300u nh\u01b0ng \u0111\u00f4i khi chu\u0301ng ta chi\u0309 c\u00e2\u0300n m\u00f4\u0323t ph\u00e2\u0300n trong s\u00f4\u0301 chu\u0301ng. Co\u0300n Nginx, kh\u00f4ng co\u0301 nhi\u00ea\u0300u l\u01b0\u0323a cho\u0323n nh\u01b0ng v\u01b0\u0300a \u0111u\u0309 cho m\u00f4\u0323t s\u00f4\u0301 nhu c\u00e2\u0300u c\u01a1 ba\u0309n cu\u0309a chu\u0301ng ta, \u0111\u00f4\u0309i la\u0323i ta co\u0301 \u0111\u01b0\u01a1\u0323c hi\u00ea\u0323u su\u00e2\u0301t v\u00ea\u0300 t\u00f4\u0301c \u0111\u00f4\u0323 cao h\u01a1n.<\/p>\r\n<h3>Ti\u0301nh linh \u0111\u00f4\u0323ng (Flexibility)<\/h3>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li><strong>H\u00f4\u0303 tr\u01a1\u0323 tu\u0300y bi\u00ea\u0301n cu\u0309a web server th\u00f4ng qua h\u00ea\u0323 th\u00f4\u0301ng modules linh \u0111\u00f4\u0323ng.<\/strong><\/li>\r\n<li>Tu\u0300y bi\u00ea\u0301n web server th\u00f4ng qua vi\u00ea\u0323c ca\u0300i \u0111\u0103\u0323t va\u0300 g\u01a1\u0303 bo\u0309 ca\u0301c modules. Apache h\u00f4\u0303 tr\u01a1\u0323 vi\u00ea\u0323c ca\u0301i \u0111\u0103\u0323t va\u0300 g\u01a1\u0303 bo\u0309 t\u01b0\u0323 \u0111\u00f4\u0323ng t\u01b0\u0300 r\u00e2\u0301t s\u01a1\u0301m vi\u0300 v\u00e2\u0323y h\u00e2\u0300u nh\u01b0 t\u00e2\u0301t ca\u0309 ca\u0301c modules cu\u0309a no\u0301 \u0111\u00ea\u0300u co\u0301 th\u00ea\u0309 \u0111\u01b0\u01a1\u0323c ca\u0300i \u0111\u0103\u0323t va\u0300 g\u01a1\u0303 bo\u0309 m\u00f4\u0323t ca\u0301ch t\u01b0\u0323 \u0111\u00f4\u0323ng.<\/li>\r\n<li>Ro\u0303 ra\u0300ng, ta th\u00e2\u0301y \u0111\u01b0\u01a1\u0323c Apache co\u0301 ti\u0301nh linh hoa\u0323t cao h\u01a1n r\u00e2\u0301t nhi\u00ea\u0300u so v\u01a1\u0301i Nginx.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li><strong>Kh\u00f4ng co\u0301 \u0111u\u0309 ti\u0301nh linh \u0111\u00f4\u0323ng (flexible) \u0111\u00ea\u0309 h\u00f4\u0303 tr\u01a1\u0323 ca\u0301c tu\u0300y bi\u00ea\u0301n th\u00f4ng qua ca\u0301c modules t\u01b0\u0323 \u0111\u00f4\u0323ng.<\/strong><\/li>\r\n<li>Tuy nhi\u00ean, va\u0300o \u0111\u00e2\u0300u n\u0103m 2016, Nginx \u0111a\u0303 co\u0301 h\u00f4\u0303 tr\u01a1\u0323 cho vi\u00ea\u0323c ca\u0300i \u0111\u0103\u0323t ca\u0301c module m\u00f4\u0323t ca\u0301ch t\u01b0\u0323 \u0111\u00f4\u0323ng. Tr\u01b0\u01a1\u0301c th\u01a1\u0300i \u0111i\u00ea\u0309m na\u0300y, Nginx y\u00eau c\u00e2\u0300u ca\u0301c qua\u0309n tri\u0323 vi\u00ean pha\u0309i bi\u00ean di\u0323ch ca\u0301c modules mu\u00f4\u0301n s\u01b0\u0309 du\u0323ng tha\u0300nh da\u0323ng binary (Nginx binary).<\/li>\r\n<li>H\u00e2\u0300u h\u00ea\u0301t ca\u0301c modules cu\u0309a Nginx ch\u01b0a h\u00f4\u0303 tr\u01a1\u0323 ca\u0300i \u0111\u0103\u0323t m\u00f4\u0323t ca\u0301ch t\u01b0\u0323 \u0111\u00f4\u0323ng nh\u01b0ng trong t\u01b0\u01a1ng lai, co\u0301 th\u00ea\u0309 chu\u0301ng se\u0303 \u0111\u01b0\u01a1\u0323c h\u00f4\u0303 tr\u01a1\u0323 ch\u01b0\u0301c n\u0103ng na\u0300y.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h3>Ba\u0309o m\u00e2\u0323t (Security)<\/h3>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li><strong>H\u00f4\u0303 tr\u01a1\u0323 ba\u0309o m\u00e2\u0323t cao.<\/strong><\/li>\r\n<li>Apache \u0111a\u0309m ba\u0309o r\u0103\u0300ng t\u00e2\u0301t ca\u0309 ca\u0301c website cha\u0323y tr\u00ean no\u0301 \u0111\u01b0\u01a1\u0323c an toa\u0300n tr\u01b0\u01a1\u0301c mo\u0323i ta\u0301c ha\u0323i va\u0300 hackers.<\/li>\r\n<li>Do \u0111o\u0301, no\u0301 cung c\u00e2\u0301p ca\u0301c ca\u0301ch (me\u0323o) c\u00e2\u0301u hi\u0300nh \u0111\u00ea\u0309 x\u01b0\u0309 ly\u0301 vi\u00ea\u0323c bi\u0323 t\u00e2\u0301n c\u00f4ng DDoS. Nh\u01b0 module <strong>mod_evasive <\/strong>co\u0301 th\u00ea\u0309 \u0111a\u0301p \u01b0\u0301ng \u0111\u01b0\u01a1\u0323c vi\u00ea\u0323c x\u01b0\u0309 ly\u0301 ca\u0301c cu\u00f4\u0323c t\u00e2\u0301n c\u00f4ng HTTP DoS, DDoS ho\u0103\u0323c t\u00e2\u0301n c\u00f4ng do\u0300 (<span>brute force \u2013 ca\u0301ch t\u00e2\u0301n c\u00f4ng b\u0103\u0300ng ca\u0301ch cha\u0323y do\u0300 nhi\u00ea\u0300u username\/password v\u01a1\u0301i hy vo\u0323ng ti\u0300m \u0111\u01b0\u01a1\u0323c \u0111u\u0301ng th\u00f4ng tin)<\/span><\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li><strong>Ba\u0309o m\u00e2\u0323t t\u00f4\u0301t h\u01a1n v\u01a1\u0301i ca\u0301c smaller codebase.<\/strong><\/li>\r\n<li>Ma\u0303 c\u01a1 s\u01a1\u0309 cu\u0309a Nginx (the Nginx code base), nho\u0309 h\u01a1n \u0111a\u0301ng k\u00ea\u0309 so theo m\u00f4\u0323t s\u00f4\u0301 b\u00e2\u0323c \u0111\u00f4\u0323 l\u01a1\u0301n, do \u0111o\u0301, \u0111\u00e2y ch\u0103\u0301c ch\u0103\u0301n la\u0300 m\u00f4\u0323t \u0111i\u00ea\u0309m c\u00f4\u0323ng l\u01a1\u0301n t\u01b0\u0300 quang \u0111i\u00ea\u0309m ba\u0309o m\u00e2\u0323t ti\u00ean ti\u00ea\u0301n.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<h3>H\u00f4\u0303 tr\u01a1\u0323 (Support)<\/h3>\r\n<p><span>H\u00f4\u0303 tr\u01a1\u0323 la\u0300 \u0111i\u00ea\u0300u ma\u0300 g\u00e2\u0300n nh\u01b0 b\u00e2\u0301t ky\u0300 kha\u0301ch ha\u0300ng na\u0300o cu\u0303ng quan t\u00e2m. No\u0301 co\u0301 th\u00ea\u0309 n\u00e2ng cao ho\u0103\u0323c pha\u0301 v\u01a1\u0303 tra\u0309i nghi\u00ea\u0323m ng\u01b0\u01a1\u0300i du\u0300ng cu\u0309a kha\u0301c ha\u0300ng.<\/span><\/p>\r\n<table class=\"table_border\">\r\n<tbody>\r\n<tr>\r\n<td style=\"text-align: center;\"><strong>Apache<\/strong><\/td>\r\n<td style=\"text-align: center;\"><strong>Nginx<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>\r\n<ul>\r\n<li><strong>H\u00f4\u0303 tr\u01a1\u0323 c\u00f4\u0323ng \u0111\u00f4\u0300ng r\u00e2\u0301t t\u00f4\u0301t th\u00f4ng qua vi\u00ea\u0323c g\u01b0\u0309i mail, IRC va\u0300\u00a0Stack\u00a0Overflow.<\/strong><\/li>\r\n<li>Co\u0301 m\u00f4\u0323t s\u00f4\u0301 go\u0301i h\u00f4\u0303 tr\u01a1\u0323 th\u01b0\u01a1ng ma\u0323i cho Apache t\u01b0\u0300 m\u00f4\u0323t s\u00f4\u0301 b\u00ean th\u01b0\u0301 3, nh\u01b0 OpenLogic\u2026Nh\u01b0ng kh\u00f4ng co\u0301 m\u00f4\u0323t danh sa\u0301ch chi\u0301nh th\u01b0\u0301c na\u0300o t\u01b0\u0300 quy\u0303 Apache. Apache h\u00f4\u0303 tr\u01a1\u0323 r\u00e2\u0301t tuy\u00ea\u0323t v\u01a1\u0300i cho t\u00e2\u0301t ca\u0309 ng\u01b0\u01a1\u0300i du\u0300ng cu\u0309a mi\u0300nh.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>\r\n<ul>\r\n<li><strong>H\u00f4\u0303 tr\u01a1\u0323 c\u00f4\u0323ng \u0111\u00f4\u0300ng r\u00e2\u0301t t\u00f4\u0301t th\u00f4ng qua vi\u00ea\u0323c g\u01b0\u0309i mail, IRC, forum va\u0300\u00a0Stack\u00a0Overflow.<\/strong><\/li>\r\n<li>C\u00f4ng ty phi\u0301a sau Nginx cung c\u00e2\u0301p m\u00f4\u0323t sa\u0309n ph\u00e2\u0309m th\u01b0\u01a1ng ma\u0323i \u0111\u01b0\u01a1\u0323c go\u0323i la\u0300 Nginx Plus. No\u0301 h\u00f4\u0303 tr\u01a1\u0323 cho m\u00f4\u0323t s\u00f4\u0301 ti\u0301nh n\u0103ng b\u00f4\u0309 sung \u0111\u0103\u0323c bi\u00ea\u0323t nh\u01b0 c\u00e2n b\u0103\u0300ng ta\u0309i (load balancing), truy\u00ea\u0300n pha\u0301t \u0111a ph\u01b0\u01a1ng ti\u00ea\u0323n (media streaming) va\u0300 gia\u0301m sa\u0301t (monitoring).<\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table> <br\/>\r\n<h2>T\u00f4\u0309ng K\u00ea\u0301t<\/h2>\r\n<div class=\"et_pb_module et_pb_text et_pb_text_12 et_pb_text_align_left et_pb_bg_layout_light\">\r\n<div class=\"et_pb_text_inner\">\r\n<p>Ca\u0309 Nginx va\u0300 Apache \u0111\u00ea\u0300u co\u0301 \u01b0u \u0111i\u00ea\u0309m ri\u00eang cu\u0309a chi\u0301nh no\u0301. Tu\u0300y theo nhu c\u00e2\u0300u s\u01b0\u0309 du\u0323ng ma\u0300 ta xem xe\u0301t mi\u0300nh n\u00ean s\u01b0\u0309 du\u0323ng web server na\u0300o trong d\u01b0\u0323 a\u0301n cu\u0309a mi\u0300nh.<\/p>\r\n<h4>Khi na\u0300o ta n\u00ean cho\u0323n Apache<\/h4>\r\n<ul>\r\n<li>Khi ta mu\u00f4\u0301n m\u00f4\u0323t s\u00f4\u0301 ng\u01b0\u01a1\u0300i du\u0300ng co\u0301 th\u00ea\u0309 t\u01b0\u0323 c\u00e2\u0301u hi\u0300nh vu\u0300ng la\u0300m vi\u00ea\u0323c cu\u0309a mi\u0300nh, m\u00f4\u0323t b\u00f4\u0323 ph\u00e2\u0323n na\u0300o \u0111o\u0301 tr\u00ean m\u00f4\u0323t h\u00ea\u0323 th\u00f4\u0301ng t\u00f4\u0309ng th\u00ea\u0309 ma\u0300 kh\u00f4ng a\u0309nh h\u01b0\u01a1\u0309ng \u0111\u00ea\u0301n c\u00e2\u0301u hi\u0300nh t\u00f4\u0309ng th\u00ea\u0309. \u0110\u00ea\u0309 th\u01b0\u0323c hi\u00ea\u0323n \u0111i\u00ea\u0300u na\u0300y, ta s\u01b0\u0309 du\u0323ng s\u01b0\u0323 linh \u0111\u00f4\u0323ng cu\u0309a file .htaccess tr\u00ean Apache.<\/li>\r\n<li>Trong tr\u01b0\u01a1\u0300ng h\u01a1\u0323p ha\u0323n ch\u00ea\u0301 ch\u01b0\u0301c n\u0103ng. Nginx co\u0301 m\u00f4\u0323t s\u00f4\u0301 modules c\u00f4\u0301t lo\u0303i (core modules) r\u00e2\u0301t quang tro\u0323ng. Tuy nhi\u00ean v\u00e2\u0303n se\u0303 co\u0301 m\u00f4\u0323t s\u00f4\u0301 ch\u01b0\u0301c n\u0103ng kh\u00f4ng \u0111\u01b0\u01a1\u0323c h\u00f4\u0303 tr\u01a1\u0323 tr\u00ean Nginx. Trong tr\u01b0\u01a1\u0300ng h\u01a1\u0323p \u0111o\u0301 ta c\u00e2\u0300n pha\u0309i nh\u01a1\u0300 va\u0300o s\u01b0\u0323 h\u00f4\u0303 tr\u01a1\u0323 cu\u0309a m\u00f4\u0323t s\u00f4\u0301 modules m\u01a1\u0309 r\u00f4\u0323ng ma\u0300 nginx kh\u00f4ng h\u00f4\u0303 tr\u01a1\u0323, ha\u0303y cho\u0323n Apache.<\/li>\r\n<\/ul>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2159 size-medium aligncenter\" src=\"https:\/\/mevn-public.s3-ap-southeast-1.amazonaws.com\/marketenterprise.vn\/wp-images\/2022\/03\/02203118\/nginxwithapache.png\" alt=\"nginxwithapache\" width=\"741\" height=\"362\" \/><\/p>\r\n<h4>Khi na\u0300o ta n\u00ean cho\u0323n Nginx<\/h4>\r\n<ul>\r\n<li>Khi ta c\u00e2\u0300n \u0111\u00ea\u0301n kha\u0309 n\u0103ng x\u01b0\u0309 ly\u0301 n\u00f4\u0323i dung ti\u0303nh th\u01b0\u01a1\u0323ng th\u01b0\u0300a cu\u0309a Nginx.<\/li>\r\n<li>Phu\u0300 h\u01a1\u0323p cho ca\u0301c website co\u0301 s\u00f4\u0301 l\u01b0\u01a1\u0323ng l\u01a1\u0301n truy c\u00e2\u0323p (high traffic) nh\u01a1\u0300 kha\u0309 n\u0103ng x\u01b0\u0309 ly\u0301 nhi\u00ea\u0300u request v\u01a1\u0301i chi\u0309 m\u00f4\u0323t thread cu\u0309a Nginx.<\/li>\r\n<\/ul>\r\n<h4>Ho\u0103\u0323c co\u0301 th\u00ea\u0309 s\u01b0\u0309 du\u0323ng ca\u0309 Nginx va\u0300 Apache<\/h4>\r\n<p>\u0110u\u0301ng v\u00e2\u0323y, Nginx va\u0300 Apache co\u0301 th\u00ea\u0309 hoa\u0323t \u0111\u00f4\u0323ng chung v\u01a1\u0301i nhau m\u00f4\u0323t ca\u0301ch nh\u1ecbp nha\u0300ng v\u01a1\u0301i nhau \u0111\u00ea\u0309 pha\u0301t huy \u0111\u01b0\u01a1\u0323c t\u00f4\u0301t nh\u00e2\u0301t \u01b0u \u0111i\u00ea\u0309m cu\u0309a t\u01b0\u0300ng loa\u0323i.<\/p>\r\n<p>Ta co\u0301 th\u00ea\u0309 \u0111\u00ea\u0309 Nginx \u0111\u01b0\u0301ng tr\u01b0\u01a1\u0301c \u0111\u00ea\u0309 nh\u00e2\u0323n request nh\u01b0 la\u0300 m\u00f4\u0323t ma\u0301y chu\u0309 proxy va\u0300 x\u01b0\u0309 ly\u0301 ca\u0301c n\u00f4\u0323i dung ti\u0303nh (static content), n\u00f4\u0323i dung \u0111\u00f4\u0323ng (dynamic content se\u0303 \u0111\u01b0\u01a1\u0323c truy\u00ea\u0300n v\u00ea\u0300 va\u0300 x\u01b0\u0309 ly\u0301 v\u01a1\u0301i apache).<\/p>\r\n<p>Ngo\u00e0i ra c\u00f2n c\u00f3 th\u00eam m\u1ed9t server \u0111\u01a1n gi\u1ea3n nh\u01b0ng r\u1ea5t m\u1ea1nh m\u1ebd n\u1eefa l\u00e0 <a href=\"https:\/\/www.marketenterprise.vn\/blog\/caddy-server-don-gian-nhung-manh-me.html\">Caddy<\/a> v\u1edbi ch\u1ec9 1 file config cho t\u1ea5t c\u1ea3.<\/p>\r\n<h2>Ta\u0300i li\u00ea\u0323u tham kha\u0309o<\/h2>\r\n<ul>\r\n<li><a href=\"https:\/\/serverguy.com\/comparison\/apache-vs-nginx\/\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Nginx vs Apache\">Nginx vs Apache.<\/a><\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n\r\n<p>&nbsp;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>\u0110\u1ed1i v\u1edbi c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean, h\u1eb3n \u0111\u00e3 kh\u00f4ng c\u00f2n xa l\u1ea1 g\u00ec v\u1edbi hai c\u00e1i t\u00ean Nginx v\u00e0 Apache ph\u1ea3i kh\u00f4ng. N\u1ebfu b\u1ea1n l\u00e0 ng\u01b0\u1eddi m\u1edbi l\u00e0m quen hay m\u1edbi b\u1eaft \u0111\u1ea7u l\u00e0m vi\u1ec7c v\u1edbi c\u00f4ng vi\u1ec7c l\u1eadp tr\u00ecnh web th\u00ec h\u00e3y theo ch\u00e2n m\u00ecnh trong b\u00e0i vi\u1ebft n\u00e0y nh\u00e9. <\/p>\n","protected":false},"author":30,"featured_media":2150,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts\/2149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/comments?post=2149"}],"version-history":[{"count":0,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/posts\/2149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/media\/2150"}],"wp:attachment":[{"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/media?parent=2149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/categories?post=2149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marketenterprise.vn\/blog\/wp-json\/wp\/v2\/tags?post=2149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}