Cách cài đặt và cấu hình Nginx làn Reverse Proxy cho Apache trên CentOS

Tác giả server360, T.Tám 04, 2014, 02:08:11 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách cài đặt và cấu hình Nginx làn Reverse Proxy cho Apache trên CentOS


1. Giới thiệu.

Nginx là một máy chủ web (web server), proxy ngược (reverse proxy) và e-mail proxy (IMAP/POP3) nhẹ, hiệu năng cao, miễn phí. 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. Nginx chỉ đứng sau Apache và IIS (của Microsoft).

Trên thực tế người 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 xử lý các trang web tĩnh, 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.


Mô hình Nginx làm Reverse Proxy cho 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 Reverse Proxy cho web server trên hệ điều hành CentOS 5.

2. Cài đặt.

Giả sử hệ thống đã có httpd chạy ở cổng 80

Dừng httpd

Mã nguồn [Chọn]
#/etc/init.d/httpd stop
Đổi httpd chạy trên cổng 8080. Mở tập tin httpd.conf

Mã nguồn [Chọn]
#vi /etc/httpd/conf/httpd.conf
Sửa giá trị.

Mã nguồn [Chọn]
Listen 8080
NameVirtualHost là *:8080

Khởi động lại dịch vụ httpd.

Mã nguồn [Chọn]
#/etc/init.d/httpd start
Tải các gói từ EPEL:

Mã nguồn [Chọn]
# rpm -Uvh [url=http://download.fedora.redhat.com/pu...5-4.noarch.rpm]http://download.fedora.redhat.com/pu...5-4.noarch.rpm[/url]
    # yum repolist

Cài đặt Nginx bằng lệnh yum

Mã nguồn [Chọn]
# yum install nginx
3. Cấu hình.

Mã nguồn [Chọn]
vi /etc/nginx/conf.d/proxy.conf
Thêm vào nội dung sau.

Mã nguồn [Chọn]
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;

Tạo các thư mục lưu cache

Mã nguồn [Chọn]
mkdir -p /tmp/cache_nginx/tmp
chown nginx.nginx –R /tmp/cache_nginx
chmod 700 -R /tmp/cache_nginx

Mã nguồn [Chọn]
vi /etc/nginx/nginx.conf
Thêm vào thông tin như sau.

Mã nguồn [Chọn]
http {
    include mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 60;
    proxy_cache_path /tmp/cache_nginx levels=2 keys_zone=web-cache:128m max_size=1024m inactive=1d;
    proxy_temp_path /tmp/cache_nginx/tmp;
    server {
    listen 80;
    server_name domain.com
    access_log /var/log/nginx/domain.com.error.log ;
    error_log /var/log/nginx/domain.com.error.log ;

    location / {
    proxy_pass [url=http://192.168.0.100:8080/]http://192.168.0.100:8080/[/url] ;
    proxy_cache web-cache;
    proxy_cache_valid 200 302 60m;
    proxy_cache_valid 404 1m;
    include /etc/nginx/conf.d/proxy.conf;
    }
    }

Trong đó:


Khởi động Nginx.

Mã nguồn [Chọn]
# /etc/init.d/nginx start
Từ client ta truy cập tới Web Server để xem kết quả.