Thứ Sáu, 1 tháng 8, 2014

Cấu hình Nginx làm Reserve Proxy trên CentOS

I – Giới thiệu:


Nginx là một máy chủ web (web server), proxy ngược (reserve proxy) và e-mail proxy (IMAP/POP3) nhẹ, hiệu năng cao, sử dụng giấy phép mở BSD. Nginx có thể chạy trên UNIX, Linux, các dòng BSD, Mac OS X, Solaris và Microsoft Windows. Theo thống kê của Netcraft, trong số 1 triệu website lớn nhất thế giới, có 6,52% sử dụng nginx. Tại Nga, quê hương của nginx, có đến 46,9% sử dụng máy chủ này. Nginx chỉ đứng sau Apache và IIS (của Microsoft).
Trên thực tế, số lượng webserver dùng Nginx để chạy website là rất ít, thay vào đó người ta sẽ sử dụng Apache bởi vì Apache tỏ ra tốt hơn Nginx trong việc phục vụ các trang web động (dynamic page). Nhưng vì tính đa dụng nên Apache có rất nhiều thành phần “thừa” khiến cho Web Server của chúng ta trở nên chậm chạp.
Giải pháp đưa ra là chúng ta sẽ sử dụng Nginx để làm proxy ngược. Nginx sẽ chạy ở phía trước (front-end) phục vụ port 80, còn Apache sẽ chạy ở phía sau (back-end) lắng nghe trên port 8080. Các Client truy vấn tới Web Server sẽ theo dạng Client <-----> Nginx <-----> Apache.
Trong bài này, mình sẽ trình bày cách cài đặt và cấu hình Nginx làm Reserve Proxy cho dịch vụ httpd trên hệ điều hành CentOS 6.

II – Yêu cầu:
  • Hệ điều hành CentOS (mình sử dụng bản CentOS 6).
  • Đã cài đặt dịch vụ httpd (tham khảo tại đây).
III – Thực hiện:
Kích hoạt sử dụng lệnh yum tải các gói từ EPEL:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
# yum repolist


Cài đặt Nginx sử dụng lệnh yum
# yum install nginx -y


Cấu hình Reserve Proxy
Tạo file porxy.conf
# vi /etc/nginx/conf.d/proxy.conf

Thêm vào nội dung sau
proxy_redirect        off;
proxy_set_header    Host        $host;
proxy_set_header    X-Real-IP    $remote_addr;
proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size    128k;
proxy_connect_timeout    90;
proxy_send_timeout    90;
proxy_read_timeout    90;
proxy_buffers        32 4k;



Mở file nginx.conf
# vi /etc/nginx/nginx.conf
Thêm vào thông tin như sau
server {
   listen  80;
   server_name  khanh.com.vn www.khanh.com.vn;

   access_log  /var/log/nginx/khanh.com.access.log ;
   error_log    /var/log/nginx/khanh.com.error.log ;   

   location / {
    proxy_pass   
http://192.168.10.109:8080/ ;
    include        /etc/nginx/conf.d/proxy.conf;
   }
}


Trong đó:
  • Listen 80: là port mà Nginx lắng nghe Client.
  • Server_name: Domain của Website
  • Proxy_pass: địa chỉ IP của Web Server kèm Port của httpd
  • Include: trỏ tới tệp tin proxy.conf vừa cấu hình ở trên.


Sau khi sửa xong nội dung file nginx.conf, ta lưu lại và kiểm tra nội dung cấu hình đã chính xác chưa
# nginx -t


Sau đó khởi động lại Nginx
# /etc/init.d/nginx restart


Tiếp tục, ta sẽ cấu hình dịch vụ httpd listen trên cổng 8080
Mở file httpd.conf
vi  /etc/httpd/conf/httpd.conf

Sửa giá trị NameVirtualHost*:8080Listen8080


Sau đó ta sẽ khởi động lại dịch vụ httpd
# service httpd restart

Từ client ta truy cập tới Web Server thành công như hình dưới.


Trên Web Server ta kiểm tra lại các port đang Listen được kết quả như hình bên dưới.
# netstat -ltpn | grep 80


Cấu hình Nginx làm Reserve Porxy thành công!

Không có nhận xét nào:

Đăng nhận xét

Học lập trình web căn bản với PHP

Bài 1: Các kiến thức căn bản Part 1:  https://jimmyvan88.blogspot.com/2012/05/can-ban-lap-trinh-web-voi-php-bai-1-cac.html Part 2:  https://...