Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apache http server

3,747 views

Published on

Apache http server

  1. 1. APACHE HTTP SERVER
  2. 2. What is a Web Server??? Web server là một máy chú đảm nhận chức năng thu nhận và xử lý các bản tin HTTP Request, sau đó phản hồi lại cho client các thông tin tương ứng.
  3. 3. Apache Web Server at aGlance
  4. 4. Apache Web Server at aGlance  Bắt đầu từ năm 1996  Là một phần mềm mã nguồn mở  Website chính thức: Apache.org  Được sử dụng rộng rãi nhất trong các WWW Server
  5. 5. APACHE HTTP SERVER ARCHITECTURE  Modular Design  Apache Core  Other Modules
  6. 6. Apache Core Cung cấp các tài nguyên phù hợp cho từng request mà Web Server nhận được.  http_protocol.c  http_main.c  http_request.c  http_core.c  alloc.c  http_config.c
  7. 7. Apache Core  http_protocol.c Chứa các thủ tục làm nhiệm vụ giao tiếp trực tiếp với các client thong qua socket bằng giao thức HTTP. Tất cả các công việc trao đổi dữ liệu với client đều do thành phần này đảm trách.  http_main.c: Thành phần làm nhiệm vụ khởi động server và tạo vòng lặp chính để đợi và chấp nhận các kết nối. Đồng thời cũng làm nhiệm vụ quản lý các bộ thời gian timeout.
  8. 8. Apache Core  http_request.c: Thành phần này làm nhiệm vụ quản lý các tiến trình xử lý bản tin request, đảm bảo chuyển các bản tin điều khiển tới các module phù hợp theo đúng thứ tự. Ngoài ra, nó còn đảm nhận vai trò quản lý các lỗi xảy ra trên server.  http_core.c: Thành phần này sẽ triển khai các chức năng cơ bản nhất của Apache.
  9. 9. Apache Core  alloc.c: Thành phần kiểm soát việc phân chia tài nguyên và lưu trữ các thông tin về sự phân chia đó.  http_config.c: Đảm nhận vai trò xử lý file cấu hình và hỗ trợ cho các virtual host. Một trong những chức năng quan trọng của thành phần này là liệt kê những module được sử dụng trong Apache.
  10. 10. Apache Core
  11. 11. Request Processing 1. Phân giải địa chỉ 2. Kiểm tra truy nhập và cấp quyền truy cập đến những tài nguyên cần thiết 3. Xác định MIME (Multipurpose Internet Mail Extensions) của đối tượng bị truy vấn. Tức là thông tin về kiểu định dạng của tài nguyên trên server được gọi tên trong gói HTTP Request 4. Chỉnh sửa lại một số thông tin, ví dụ thay đổi alias thành một đường dẫn thực (định nghĩa alias sẽ được trình bày trong phần về mod_alias dưới đây) 5. Gửi trả dữ liệu lại cho client. 6. Ghi lại log.
  12. 12. Communicating betweenModules Các modules không liên lạc trực tiếp với nhau, mọi giao tiếp đều phải thông qua core. Mô hình sau đây trình bày mô hình trao đổi thông tin của các modules:
  13. 13. Handler  Handler là một hành động được Apache định nghĩa riêng cho từng loại file nhất định. Mặc định sau khi cài đăt Apache thì tùy theo loại file mà sẽ được xử lý theo các cách khác nhau.  Handler có thể được cấu hình dựa trên phần mở rộng của file (extension) hoặc theo từng thư mục khác nhau.
  14. 14. Handler Mặc định, có sẵn 7 handler trong hệ thống như sau:  Send-as-is: sử dụng trong module mod_asis, dùng để gửi trả gói tin cho client mà không sử dụng đầy đủ các thông số trong HTTP header.  Cgi-script: coi file là một cgi-script.  Imap-file: sử dụng chung với mod_imagemap  Server-info: lấy thông tin về cấu hình của server  Server-status: lấy thông tin về trạng thái của server.  Type_map: sử dụng cùng với module mod_negotiation.
  15. 15. Modules Các module có thể đã được cài đặt sẵn trong quá trình build Apache, hoặc cũng có thể cài đặt thêm. Mặc định có sẵn các module sau:  Chuyển đổi giữa URI thành filename trên server:  Mod_userdir: chuyển thư mục home cho từng user.  Mod_rewrite: điều chỉnh lại đường dẫn URL.  Giai đoạn Xác thực / phân quyền:  mod_auth, mod_auth_anon,mod_auth_db, mod_auth_dbm: các kiểu xác thực người dùng.  Mod_access: kiểm soát truy nhập theo từng host.
  16. 16. Modules  Xác định MIME của đối tượng được truy vấn:  mod_mime: xác định loại file bằng cách dựa vào phần mở rộng.  mod_mime_magic: xác định loại file bằng cách sử dụng “magic number”  Chỉnh sửa đường dẫn:  Mod_alias: thay thế alias bằng đường dẫn thực trên server.  Mod_env: thay đổi các tham số hệ thống dựa trên thông tin trong file cấu hình.  Mod_spelling: tự động sửa lỗi trong URL.
  17. 17. Modules  Gửi trả lại dữ liệu cho client:  Mod_actions: các script cho từng loại file sẽ được thực thi.  Mod_asis: gửi file nguyên dạng  Mod_autoindex:  Mod_cgi: gọi script CGI và trả lại kết quả.  Mod_include:  Mod_dir: xử lý về thư mục  Mod_imap: xử lý image-map files.  Ghi log:  Mod_log_*: các module log khác nhau.
  18. 18. Apache Configuration File File cấu hình chính của Apache mặc định nằm ở đường dẫn /etc/httpd/conf/httpd.conf
  19. 19. Apache Configuration File Gồm các thành phần chính: 1. Global Environment: Tham số môi trường toàn cục: Các thông số này được cấu hình để điều khiển hoạt động của toàn bộ Apache Server. 2. Các directive định nghĩa các thông số của ‘main’ hay ‘default’ server. Khi một request đến Apache Server mà không được Virtual Host nào xử lý thì các thông số này sẽ quyết định hành động của Apache Server. Các tham số này cũng đồng thời xác lập các giá trị mặc định cho tất cả các Virtual Host. 3. Các tham số riêng cho từng virtual host.
  20. 20. Config/ GlobalEnvironment 1. ServerToken & ServerSignature ServerSignature Off ServerTokens Prod  giảm nguy hơ bị lộ thông tin về phiên bản Apache đang chạyTrên server 2. ServerRoot Cấu hình thư mục lưu trữ chính của Apache
  21. 21. Config/ GlobalEnvironment 3. PidFile Thông số này lưu trữ đường dẫn đến file httpd.pid, là file lưu giữ process ID của Apache mỗi khi khởi chạy. 4. Timeout Thời gian time out cho hệ thống, giá trị mặc định 5. KeepAlive Cho phép hay không kiểu kết nối KeepAlive được hoạt động. KeepAlive là một hình thức có thể giúp tăng tốc độ tải trang khi không mở kết nối cho từng gói request một. Tuy nhiên, khi bị tấn công DDoS thì nên tắt chức năng này để giảm thiểu ảnh hưởng tới hệ thống. KeepAliveTimeout
  22. 22. Config/ GlobalEnvironment 6. Listen Thông số này dùng để cấu hình địa chỉ IP và port mà Apache sẽ nhận các gói HTTP Request 7. LoadModule Dùng để chọn những module nào sẽ được khởi động cùng với hệ thống Apache. 8. Include Cấu hình thư mục chứa file config
  23. 23. Config/ Main ServerConfiguration 1. ServerAdmin Cấu hình địa chỉ email của người quản trị, thông tin này sẽ được hiển thị trên một số trang web nhất định, ví dụ như trang báo lỗi. 2. UseCanonicalName Thông thường khi sử dụng Name-based Virtual Host thì nên set thông số này là Off 3. DocumentRoot Thư mục lưu trữ các đường dẫn chứa mã nguồn của website. Các request từ client thông thường sẽ chỉ truy xuất được thông tin từ thư mục này.
  24. 24. Config/ Main ServerConfiguration 4. DirectoryIndex Chỉ định file mặc định được trả về cho client khi có request tới một thư mục nào đó. Thông thường các file như index.html, index.php sẽ được sử dụng. DirectoryIndex index.html index.html.var 5. AccessFileName Chỉ định file bổ sung các cấu hình riêng cho từng thư mục nhất định. Thông thường sẽ là file “.htaccess” như sau:
  25. 25. Config/ Main ServerConfiguration 6. TypesConfig Chỉ đường dẫn đến file mime.types. File này sẽ giúp cho Apache tra cứu phần mở rộng của file để xác định MIME type trong HTTP Header. DefaultType text/plain Mặc định MIME type cho các file apache không xác định được sẽ là kiểu file text. 7. HostnameLookups Cấu hình ghi log tên hostname của client hay chỉ địa chỉ IP của client.
  26. 26. Config/ Main ServerConfiguration 8. ErrorLog Cấu hình đường dẫn lưu trữ Error của hệ thống 9. LogLevel Mức độ ghi log. Giống như syslog, log trong Apache cũng được ghi chia thành 7 mức độ khác nhau, từ cao xuống thấp là emergency, alert, critical, error, warning, notification, informational, debug. 10. Log
  27. 27. Apache Virtual Host Bằng cách sử dụng Virtual Host trong Apache HTTP Server, người quản trị có thể chạy đồng thời nhiều website trên cùng một server. Với kỹ thuật này, tài nguyên của server được tận dụng hiệu quả tối đa. Có hai loại cấu hình Apache sẽ được trình bày, bao gồm: 1. IP-based Virtual Host 2. Name-based Virtual Host
  28. 28. IP Based Virtual Host Apache Server 1.1.1.1 1.1.1.2A.com B.com Trỏ từng website vào các địa chỉ khác nhau => trên server cần có nhiều hơn 1 địa chỉ IP
  29. 29. Name-based Virtual Host Thông tin hostname được lưu trong phần Header của bản tin Apache Server HTTP Request. Khi nhận các bản 1.1.1.1 tin Request này thì Apache sẽA.com chuyển đển các virtual hostB.com tương ứng để xử lý => Chi cần sử dụng 1 IP, trỏ nhiều domain name vào cùng IP đó
  30. 30. Virtual Host Configuration Cấu hình virtual host được thực hiện trong file httpd.conf hoặc file httpd-vhosts.conf Với cấu hình Virtual Host, cần cầu hình các thành phần sau đây:  Đường dẫn đến thư mục lưu trữ web.  Server Name.  Đường dẫn đến file log.
  31. 31. vHost ConfigurationExample<VirtualHost 10.1.2.3:80>ServerAdmin webmaster@host.example.comDocumentRoot /www/docs/host.example.comServerName host.example.comErrorLog logs/host.example.com-error_logTransferLog logs/host.example.com-access_log</VirtualHost>
  32. 32. Multiprocessing Có 2 khái niệm về khả năng xử lý của Web Server :  Single-threaded Web Server: Không có khả năng xử lý đồng thời nhiều request cùng một lúc  Multi-thread Web Server: Có khả năng xử lý nhiều request cùng lúc, gồm 2 kỹ thuật chính:  Miltiprocess: Tạo Process mới cho từng Request.  Multithread: Tạo Thread mới cho từng Request.
  33. 33. Process vs Thread  sử dụng kỹ thuật đa nhiệm dựa vào thread sẽ tiết kiệm được tài nguyên phần cứng và tăng tốc độ xử lý giữa các tác vụ khác nhau. Kiểu xử lý đa nhiệm bằng cách tạo process sẽ ấn định bộ nhớ cho từng request được nhận, do vậy khả năng xử lý của kỹ thuật này có phần hạn chế hơn.
  34. 34. Multiprocessing in Apache Trong Apache cũng có các module có chức năng hỗ trợ khả năng xử lý đa nhiệm cho server. Các module này được gọi là Multiprocessing Modules (MPMs). Trong Apache quan tâm chủ yếu đến 2 MPMs:  prefork  worker
  35. 35. Prefork vs. Worker Prefork Worker Multiprocessing Multithreading Tạo ra các process riêng biệt Tạo ra các thread riêng biệt => phù hợp hơn đối với các hệ thống xử lý đa lõi Lỗi trên 1 process không thể gây ảnh hưởng Khi có lỗi xảy ra trên 1 thread thì các thread lên các process khác cùng process có thể bị ảnh hưởngViệc lựa chọn kỹ thuật xử lý còn tùy thuộc vào nhiều yếu tố khác của server, ví dụ PHP khônghoạt động ổn định với hình thức chia sẻ bộ nhớ chung của Worker nên thường phải sử dụngPrefork
  36. 36. APACHEMODULES Nằm bên trong các Modules cũng như file cấu hình Apache nhằm chỉ thị các hoạt động của Apache.
  37. 37. APACHEMODULES ► Description: tổng quát chức năng ► Status: (MPM, Base, Extension, Experimental, External). ► Module Indentifier ► Source file
  38. 38. MODULES – MOD_CACHECache nội dung trang web, làm tăng tốc độ truy cập website – cần sử dụng kết hợp module nàyvới mod_disk_cache hoặc mod_mem_cache.Config:<IfModule mod_cache.c> LoadModule mem_cache_module modules/mod_mem_cache.so <IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule></IfModule>
  39. 39. MODULES –MOD_GZIP/DEFLATE Nén dữ liệu trước khi gửi tới client Config: <Location /> # Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch bMSIE !no-gzip !gzip-only-text/html # Don’t compress image SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-v # Make sure proxies dont deliver the wrong content Header append Vary User-Agent env=!dont-vary </Location>
  40. 40. MODULES – MOD_SSL Mã hóa dữ liệu sử dụng giao thức Secure Sockets Layer ( SSL ) và bảo mật giao thức ở tầng giao vận ( TLS ) Config: <VirtualHost *:443> ServerAdmin usera.com DocumentRoot "/var/www/html/tien.td/" SSLEngine on ServerName usera.com SSLCertificateFile /var/www/html/tien.td/ssl/server.crt SSLCertificateKeyFile /var/www/html/tien.td/ssl/server.key </VirtualHost>
  41. 41. Nội dung  Giới thiệu  Tóm tắt và cấu hình các module  Cách hoạt động và so sánh  Lab
  42. 42. Giới thiệu  php_module : được đánh giá nhanh nhất, bảo mật kém. (DSO)  cgi_module : giúp php process tách biệt với process của apache, hỗ trợ chạy user riêng biệt (suexec on). Chậm hơn mod_php 36 lần.  cgid_module : tương tự như mod_cgi nhưng được enable nếu chọn multi threaded MPM (worker) khi compile.  suphp_module: nâng cao độ bảo mật, chậm hơn so với php_module và cgi (suexec off), nhanh hơn cgi (suexec on). Chậm hơn mod_php 25 lần.  fcgid_module : nhanh hơn mod_suphp, và độ bảo mật cao.
  43. 43. Mod_php  PHP interpreter được load vào apache process  PHP khởi động cùng với apache, load nhanh  Cấu hình:  LoadModule php5_module modules/libphp5.so  AddHandler php5-script .php
  44. 44. Mod_cgi  Với mỗi request, web server spawns 1 process mới để run CGI program.  CGI tách biệt với apache, giao tiếp qua pipe I/O  Khởi tạo Process để xử lý 1 request, terminate sau đó  Cấu hình:  ScriptAlias /local-bin /usr/local/bin  AddHandler application/x-httpd-php5 php  Action application/x-httpd-php5 /local-bin/php-cgi  <Directory "/usr/local/bin">  Order allow,deny  Allow from all  </Directory>
  45. 45. Mod_suphp  Hoạt động như cgi nhưng có cơ chế riêng để thực thi quyền user  Cấu hình:  httpd.conf  webserver_user=apache  x-httpd-php=php:/usr/bin/php hoặc x-httpd-php="php:/usr/bin/php-cgi"  x-suphp-cgi=execute:!self hoặc x-suphp-cgi="execute:!self"  AddHandler x-httpd-php .php .php3 .php4 .php5  suPHP_Engine on  suPHP_AddHandler x-httpd-php  VirtualHost:  suPHP_UserGroup username groupname 
  46. 46. Mod_fcgid  Hoạt động như cgi tuy nhiên có 2 điểm khác biệt  Fastcgi process vẫn tồn tại sau khi xử lý request (mặc định 500)  Apache và fastcgi giao tiếp qua TCP connection  Tiêu thụ nhiều ram do các process chiếm giữ, ít tốn cpu do không phải thực hiện khởi tạo, chấm dứt process.
  47. 47. Vấn đề bảo mật
  48. 48. SuEXEC(Switch User for EXEC)  Cho phép CGI scripts chạy theo từng user  Suexec được cấu hình cho mỗi virtual host  Cấu hình:  SuexecUserGroup nobody nogroup
  49. 49. So sánh

×