Thứ sáu, 14/02/2014 | 00:00 GMT+7

Cách sử dụng server Apache HTTP dưới dạng Reverse-Proxy bằng cách sử dụng extension mod_proxy

Apache là một server HTTP đã được thử nghiệm và thử nghiệm, đi kèm với quyền truy cập vào một loạt các tiện ích mở rộng mạnh mẽ. Mặc dù nó có vẻ không phải là lựa chọn hàng đầu về việc chạy Reverse Proxy , nhưng các administrator hệ thống đã phụ thuộc vào Apache để có bộ tính năng phong phú có sẵn cũng có thể sử dụng nó làm cổng vào server ứng dụng của họ. Trong hầu hết các trường hợp, điều này sẽ chuyển sang loại bỏ một lớp bổ sung khỏi server của họ được cài đặt hoặc nhu cầu sử dụng thêm một công cụ khác chỉ để chuyển hướng kết nối.


Trong bài viết DigitalOcean này, ta sẽ xem cách cài đặt Apache trên Ubuntu 13 và sử dụng nó làm Reverse Proxy để chào đón các kết nối đến và chuyển hướng chúng đến (các) server ứng dụng chạy trên cùng một mạng. Với mục đích này, ta sẽ sử dụng và làm việc với phần mở rộng mod_proxy và một số module Apache có liên quan khác.

Bảng chú giải


1. Apache


2. Apache hoạt động như một Reverse-Proxy sử dụng mod_proxy


3. Cài đặt Apache và mod_proxy


  1. Cập nhật Hệ điều hành
  2. Nhận các công cụ xây dựng cơ bản
  3. Nhận các module và dependencies

4. Cấu hình Apache cho các kết nối proxy


  1. Kích hoạt các module
  2. Sửa đổi cấu hình mặc định
  3. Bật cân bằng tải
  4. Bật hỗ trợ SSL
  5. Khởi động lại Apache

Apache


Server Apache HTTP không cần giới thiệu, vì nó có lẽ là web server nổi tiếng và phổ biến nhất tồn tại. Có thể chạy Apache rất dễ dàng trên nhiều nền tảng và cài đặt khác nhau. Ứng dụng đi kèm với rất nhiều module của bên thứ ba để xử lý các loại tác vụ khác nhau (mod_rewrite để viết lại URL dựa trên luật ) và một trong số chúng, mặc dù ngày nay tương đối bị bỏ quên, là mod_proxy : Mô-đun Apache để triển khai proxy (hoặc cổng vào) cho server chạy ở mặt sau.

Mẹo: Theo một số bài báo, tên của Apache xuất phát từ bản chất "chắp vá" của server - tức là nó là một tập hợp các bản vá ứng dụng (hoặc mô-đun ).

Lưu ý: Để tìm hiểu thêm về Apache, bạn có thể xem mục nhập Wikipedia về chủ đề - Apache HTTP Server .

Apache hoạt động như một Reverse Proxy sử dụng mod_proxy


mod_proxy là module Apache để chuyển hướng các kết nối (tức là một cổng, chuyển chúng qua). Nó được kích hoạt để sử dụng giống như bất kỳ module nào khác và cấu hình khá cơ bản (hoặc tiêu chuẩn), phù hợp với những module khác. mod_proxy không chỉ là một module đơn lẻ mà là một tập hợp chúng, với mỗi module mang đến một bộ chức năng mới.

Một số module này là:

  • mod_proxy: Mô-đun proxy chính cho Apache quản lý các kết nối và chuyển hướng chúng.

  • mod_proxy_http: Mô-đun này triển khai các tính năng proxy cho các giao thức HTTP và HTTPS.

  • mod_proxy_ftp: Mô-đun này làm tương tự nhưng đối với giao thức FTP.

  • mod_proxy_connect: Cái này được sử dụng cho tunnel SSL.

  • mod_proxy_ajp: Được sử dụng để làm việc với giao thức AJP.

  • mod_proxy_wstunnel: Được sử dụng để làm việc với web-socket (tức là WS và WSS).

  • mod_proxy_balancer: Được sử dụng để phân cụm và cân bằng tải.

  • mod_cache: Được sử dụng để lưu vào bộ nhớ đệm.

  • mod_headers: Được sử dụng để quản lý tiêu đề HTTP.

  • mod_deflate: Dùng để nén.

Lưu ý: Để tìm hiểu thêm về Apache và mod_proxy, bạn có thể xem tài liệu Apache chính thức về chủ đề này tại đây .

Cài đặt Apache và mod_proxy


Lưu ý: Các hướng dẫn đưa ra ở đây được giữ ngắn gọn, vì rất có thể bạn đã cài đặt Apache hoặc biết cách sử dụng nó.Tuy nhiên, theo các bước dưới đây, bạn có thể nhận được một VPS Ubuntu mới chạy Apache chỉ trong vài phút.

Cập nhật Hệ điều hành


Ta sẽ bắt đầu với việc chuẩn bị server ảo của ta . Trước tiên, ta sẽ nâng cấp các thành phần có sẵn mặc định đảm bảo rằng ta có mọi thứ được cập nhật.

Cập nhật danh sách nguồn phần mềm và nâng cấp các ứng dụng cũ:

  • aptitude update
  • aptitude -y upgrade

Nhận các công cụ xây dựng cơ bản


Hãy tiếp tục với việc nhận gói thiết yếu để xây dựng ứng dụng - bản xây dựng cần thiết . Gói này chứa các công cụ cần thiết để cài đặt một số thứ nhất định từ nguồn .

Chạy lệnh sau để cài đặt gói build-essential :

  • aptitude install -y build-essential

Nhận các module và dependencies


Tiếp theo, ta sẽ lấy module và các phụ thuộc.

Chạy lệnh sau để cài đặt chúng:

  • aptitude install -y libapache2-mod-proxy-html libxml2-dev

Cấu hình Apache cho các kết nối proxy


Kích hoạt các module


Trước khi cấu hình Apache, ta sẽ kích hoạt các module cần thiết mà ta sẽ sử dụng trong hướng dẫn này hoặc có thể hữu ích trong tương lai.

Trước tiên, hãy xác minh tất cả các module đã được cài đặt chính xác và sẵn sàng để được kích hoạt.

Chạy lệnh sau để nhận danh sách các module Apache có sẵn:

  • a2enmod
  • # You will be presented with an output similar to:
  • # Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_itk mpm_prefork mpm_worker negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_html proxy_http proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
  • # Which module(s) do you want to enable (wildcards ok)?

Khi bạn được yêu cầu chọn module bạn muốn, bạn có thể chuyển dòng dưới đây liệt kê tên module :

Danh sách các module :

  • proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

Hoặc cách khác, bạn có thể chạy các lệnh sau để bật từng module một:

  • a2enmod proxy
  • a2enmod proxy_http
  • a2enmod proxy_ajp
  • a2enmod rewrite
  • a2enmod deflate
  • a2enmod headers
  • a2enmod proxy_balancer
  • a2enmod proxy_connect
  • a2enmod proxy_html

Lưu ý: Một số module có thể được bật theo mặc định. Cố gắng bật chúng hai lần sẽ chỉ đảm bảo chúng đang hoạt động.

Sửa đổi cấu hình mặc định


Trong bước này, ta sẽ xem cách sửa đổi file cấu hình mặc định 000-default.conf bên trong /etc/apache2/sites-enabled để cài đặt chức năng “proxy”.

Chạy lệnh sau để chỉnh sửa server ảo Apache mặc định bằng editor văn bản nano:

  • nano /etc/apache2/sites-enabled/000-default.conf

Ở đây, ta sẽ xác định một server ảo proxy sử dụng mod_virtualhostmod_proxy cùng nhau.

Copy paste đoạn cấu hình bên dưới, sửa đổi nó cho phù hợp với nhu cầu của bạn:

    <VirtualHost *:*>         ProxyPreserveHost On          # Servers to proxy the connection, or;         # List of application servers:         # Usage:         # ProxyPass / http://[IP Addr.]:[port]/         # ProxyPassReverse / http://[IP Addr.]:[port]/         # Example:          ProxyPass / http://0.0.0.0:8080/         ProxyPassReverse / http://0.0.0.0:8080/          ServerName localhost     </VirtualHost> 

Nhấn CTRL + X và xác nhận với Y để lưu và thoát.

Lưu ý: Để tìm hiểu thêm về cấu hình server ảo, bạn có thể xem hướng dẫn sử dụng Apache chi tiết về chủ đề này bằng cách nhấp vào đây .

Bật cân bằng tải


Nếu bạn có nhiều server back-end, một cách tốt để phân phối kết nối khi ủy quyền chúng là sử dụng các tính năng cân bằng tải của Apache.

Bắt đầu chỉnh sửa cài đặt server ảo như bước trước, nhưng lần này bằng cách sử dụng ví dụ cấu hình bên dưới:

    <Proxy balancer://mycluster>         # Define back-end servers:          # Server 1         BalancerMember http://0.0.0.0:8080/          # Server 2         BalancerMember http://0.0.0.0:8081/     </Proxy>      <VirtualHost *:*>         # Apply VH settings as desired         # However, configure ProxyPass argument to         # use "mycluster" to balance the load          ProxyPass / balancer://mycluster     </VirtualHost> 

Bật hỗ trợ Reverse Proxy SSL


Nếu bạn đang xử lý các kết nối và certificate SSL, bạn cũng cần kích hoạt một server ảo thứ cấp với các cài đặt bên dưới.

Lặp lại các bước từ các bước trước nhưng sử dụng các tùy chọn cấu hình sau:

    Listen 443      NameVirtualHost *:443     <VirtualHost *:443>          SSLEngine On          # Set the path to SSL certificate         # Usage: SSLCertificateFile /path/to/cert.pem         SSLCertificateFile /etc/apache2/ssl/file.pem           # Servers to proxy the connection, or;         # List of application servers:         # Usage:         # ProxyPass / http://[IP Addr.]:[port]/         # ProxyPassReverse / http://[IP Addr.]:[port]/         # Example:          ProxyPass / http://0.0.0.0:8080/         ProxyPassReverse / http://0.0.0.0:8080/          # Or, balance the load:         # ProxyPass / balancer://balancer_cluster_name      </VirtualHost> 

Khởi động lại Apache


Sau khi hài lòng với cấu hình của bạn , bạn cần khởi động lại server cloud để các thay đổi có hiệu lực.

Thực thi lệnh sau để khởi động lại Apache:

  • service apache2 restart

Và đó là nó!

Đến đây bạn có thể truy cập VPS của bạn và Apache sẽ đảo ngược các kết nối proxy đến các server ứng dụng phía sau của bạn.


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Apache Tomcat trên server Debian
2014-01-07
Cách cài đặt và quản lý Apache Qpid
2013-12-30
Cách chuyển từ web server Apache sang Nginx trên VPS Ubuntu
2013-12-17
Cách cài đặt Apache mod_spdy trên VPS Debian 7
2013-12-12
Cách thiết lập ứng dụng Rails 4 với Apache và Passenger trên CentOS 6
2013-12-06
Cách thiết lập công cụ Railo CFML với Tomcat và Apache trên Debian 7 hoặc Ubuntu 13 VPS
2013-11-19
Cách tạo chứng chỉ SSL trên Apache cho Debian 7
2013-11-11
Cách thiết lập server ảo Apache trên Debian 7
2013-10-29
Cách cấu hình Varnish cho Drupal với Apache trên Debian và Ubuntu
2013-10-21
Cách thiết lập mod_security với Apache trên Debian / Ubuntu
2013-10-21