banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Làm Reverse Proxy với apache 2  XML
  [Article]   Làm Reverse Proxy với apache 2 23/03/2008 07:36:49 (+0700) | #1 | 120712
[Avatar]
nhuhoang
Elite Member

[Minus]    0    [Plus]
Joined: 27/06/2007 00:49:10
Messages: 111
Location: /dev/null
Offline
[Profile] [PM] [WWW]
Anh mrro cũng đã có lần định viết về vấn đề này nhưng mới thấy /hvaonline/posts/list/100.html, giới thiệu qua về reverse proxy chứ chưa thấy nói về cấu hình. Nay tớ xin mạo muội viết tiếp phần 2, có gì sai sót xin các bạn chỉ giáo.

Cấu hình cơ bản

Đầu tiên, các bạn cần đưa chỉ dẫn "ProxyRequests Off" vào để tránh kẻ khác lợi dụng thành forward proxy. Chúng ta sẽ cấu hình dựa trên một mô hình đơn giản: Server sẽ luân chuyển các request đến các back-and server dựa theo đường dẫn có trong Header của request:




Ví dụ khi một user truy cập đến www.mcslp.com/marketing thì reverse proxy sẽ lấy nội dung của marketing.mcslp.com để cung cấp cho client. Trong phần cấu hình cho reverse proxy ta có chỉ dẫn sau:
Code:
ProxyPass [path] !|url

Cấu hình cho cả 3 back-end server như sau:
Code:
ProxyPass /marketing http://marketing.mcslp.com
ProxyPass /accounts http://finance.mcslp.com
ProxyPass /sales http://sales.mcslp.com

Và như vậy, www.mcslp.com/marketing/admin/index.html sẽ được lấy từ marketing.mcslp.com/admin/index.html . Nếu bạn không muốn reverse proxy luân chuyển các request đến một thư mục con trên back-end server thì bạn có thể dùng dấu chấm than (!) thay cho url. Ví dụ:
Code:
ProxyPass /marketing/account !
ProxyPass /marketing http://marketing.mcslp.com

Sẽ reverse proxy /marketing nhưng request đến /marketing/account không được luân chuyển đến http://marketing.mcslp.com/account


ProxyPassReverse

Chỉ dẫn ProxyPass có một nhược điểm, đó là nó không can thiệp vào header của reponse data nên nếu trong header có các trường như Location, URI hay Content-Location thì client sẽ dễ dàng biết được nguồn gốc thực sự của trang web đó. Ví dụ như bạn có một trang http://marketing.mcslp.com/wwwect.php có nội dung như sau:
Code:
<?
header(“Location: http://marketing.mcslp.com/admin/");
?>

Thì trong header của client ta sẽ thấy trường
Code:
Location: http://marketing.mcslp.com/admin/

Chứ không phải
Code:
Location: http://www.mcslp.com/marketing/admin/

như mong muốn.
Để khắc phục ta thêm vào chỉ dẫn ProxyPassReverse, các tham số giống hệt ProxyPass:
Code:
ProxyPass /marketing http://marketing.mcslp.com
ProxyPassReverse /marketing http://marketing.mcslp.com

Tác dụng của ProxyPassReverse là rewrite lại header của reponse data và với ví dụ trên, giá trị của trường location sẽ thực sự là http://www.mcslp.com/marketing/admin/

Cấu hình hoàn chỉnh:

Đây chỉ là cấu hình mẫu của reverse proxy, các bạn còn phải thiết lập cho back-end server mà tôi không đề cập ở đây (xem thêm về VirtualHost trên trang chủ của apache)
Code:
<VirtualHost *:80>
    ServerName mcslp.com
    Alias www.mcslp.com
    DocumentRoot /var/www/mcslp.com

    ProxyRequests Off
    ProxyPass /marketing http://marketing.mcslp.com
    ProxyPass /accounts http://finance.mcslp.com
    ProxyPass /sales http://sales.mcslp.com
    ProxyPassReverse /marketing http://marketing.mcslp.com
    ProxyPassReverse /accounts http://finance.mcslp.com
    ProxyPassReverse /sales http://sales.mcslp.com
</VirtualHost>


Mod Proxy còn rất nhiều tính năng hay, các bạn có thể tham khảo http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 23/03/2008 07:46:23 (+0700) | #2 | 120718
[Avatar]
nhuhoang
Elite Member

[Minus]    0    [Plus]
Joined: 27/06/2007 00:49:10
Messages: 111
Location: /dev/null
Offline
[Profile] [PM] [WWW]
Chú ý đối với Debian, mặc định apache sẽ deny các request đến đường dẫn sử dụng cho proxy. Bạn phải sửa file /etc/apache2/mods-enabled/proxy.conf và comment 3 dòng sau

Code:
<Proxy *>
                AddDefaultCharset off
                #Order deny,allow
                #Deny from all
                #Allow from .example.com
         </Proxy>

sau đó khởi động lại apache
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 26/03/2008 20:49:59 (+0700) | #3 | 121281
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]
Hello bro,

Trước hết cám ơn bro đóng góp bài viết có giá trị cho HVA
Nếu đã "chơi" Reverse Proxy thì sao không dùng Squid mà lại dùng Apache nhĩ , dù sao Squid cũng là phần mềm internet proxy caching cực tốt mà smilie




Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 27/03/2008 03:14:14 (+0700) | #4 | 121357
safari
Member

[Minus]    0    [Plus]
Joined: 31/01/2008 01:19:23
Messages: 33
Location: somewhere
Offline
[Profile] [PM]

Golden Autumn wrote:

Nếu đã "chơi" Reverse Proxy thì sao không dùng Squid mà lại dùng Apache nhĩ , dù sao Squid cũng là phần mềm internet proxy caching cực tốt mà smilie
 


Một ứng dụng "chơi" Reverse Proxy với Apache là làm Load-Balancer (mod_proxy_balancer, Apache version 2.2.x trở lên).
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 27/03/2008 08:00:24 (+0700) | #5 | 121425
[Avatar]
nhuhoang
Elite Member

[Minus]    0    [Plus]
Joined: 27/06/2007 00:49:10
Messages: 111
Location: /dev/null
Offline
[Profile] [PM] [WWW]

Golden Autumn wrote:
Hello bro,
Trước hết cám ơn bro đóng góp bài viết có giá trị cho HVA
Nếu đã "chơi" Reverse Proxy thì sao không dùng Squid mà lại dùng Apache nhĩ , dù sao Squid cũng là phần mềm internet proxy caching cực tốt mà smilie
 


Em mới dùng squid làm forward proxy chứ chưa thử làm reverse. Để mai mốt tìm hiểu sau smilie
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 27/03/2008 10:13:57 (+0700) | #6 | 121453
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]
Bro ra Google gõ
Setting up Squid Reverse Proxy
Reverse Proxy using squid

Chắc ngoài đó có đó smilie
Good luck
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Re: Làm Reverse Proxy với apache 2 29/03/2008 00:21:20 (+0700) | #7 | 121756
tinh.truong
Member

[Minus]    0    [Plus]
Joined: 28/03/2008 11:57:30
Messages: 4
Offline
[Profile] [PM]
Squid làm forward proxy thì okie, nhưng làm reverse proxy thì không có tốt bằng thằng http://varnish.projects.linpro.no/ đâu smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|