Bỏ qua điều hướng
← Về danh sách bài viết
Hướng dẫn kỹ thuật

Cài đặt Nginx Reverse Proxy cho Apache trên centos 7

Hướng dẫn khách hàng cấu hình Nginx làm Reverse Proxy với webserver là Apache

NGINX là gì?

1. Giới thiệu.

Bài viết sau sẽ hướng dẫn khách hàng cấu hình Nginx làm Reverse Proxy với webserver là Apache. Vậy tại sao phải cấu hình như vậy. Trên thực tế chúng ta sử dụng Apache bởi vì Apache tốt hơn Nginx trong việc phục vụ các trang web động (xử lý php). Nhưng vì tính đa dụng nên Apache khiến cho Web Server trở nên chậm chạp hơn so với  Nginx khi xử lý các file tĩnh. Để tận dụng ưu thế của cả hai, khái niệm Reverse Proxy đã ra đời. Nói đơn giản là dùng kết hợp Nginx để xử lý tập tin tĩnh (jpg, gif, png, css, js, html) và dùng Apache xử lý các tập tin động (php,…). Mô hình cụ thể là dùng Nginx để làm proxy ngược. Nginx sẽ chạy ở port 80 tiếp nhận và xử lý các yêu cầu trang web tĩnh, còn các file có đuôi mở rộng là .php sẽ chuyển cho Apache thực hiện (port 8080) sau đó trả kết quả về cho Nginx. Mô hình:  Client <—-> Nginx <—--> Apache.

2. Các bước thực hiện cài đặt Nginx Reverse Proxy

Bước 1: Cài đặt gói Apache 2.4 httpd service.

#yum install httpd

#httpd -v

#systemctl restart httpd

#systemctl status httpd

  1. Kế tiếp, bạn cần mở dịch vụ http (mở port) trên Firewall đang được kích hoạt trên server (mặc định, tường lửa Firewalld được sử dụng trên CentOS 7) bằng những lệnh sau:

#firewall-cmd --permanent --add-service=http

#firewall-cmd --permanent --add-service=https

#systemctl restart firewalld

  1. Cuối cùng, bạn mở trình duyệt web trên thiết bị client, truy cập đến địa chỉ IP server với giao thức HTTP qua đường dẫn: http://IP-server để tải nội dung trang mặc định của Apache 2.4

Nếu bạn cần cấu hình Apache services tự động khởi động sau khi reboot server, có thể sử dụng lệnh bên dưới:

# systemctl enable httpd

Bước 2: Cài đặt PHP 7 hỗ trợ cho Apache.

  1. Để cài đặt PHP 7x, bạn cần cài đặt và kích hoạt EPELvà Remi repository trên hệ thống CentOS 7 bằng câu lệnh sau:
    • Cài đặt EPEL

#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    • Cài đặt Remi

# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

  1. Server của bạn đã được thiết lập để cài đặt PHP từ yum repository. Sử dụng một trong những lệnh bên dưới để cài đặt PHP 7.0, PHP 7.1, PHP 7.2 hoặc PHP 7.3:

## Install PHP 7.3

# yum --enablerepo=remi-php73 install php

  1. Sau khi cài đặt một phiên bản PHP 7.x trên server, để cài đặt thêm một số PHP modules cần thiết cho các ứng dụng, bạn sử dụng lệnh bên dưới:

### For PHP 7.3

#yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt

#yum --enablerepo=remi,remi-php73 install php-fpm php-common

  1. Sau khi tiến trình cài đặt hoàn tất, để kiểm tra lại thông tin phiên bản PHP đang được kích hoạt lên server, bạn sử dụng lệnh:

# php -v

Kiểm tra phiên bản PHP
  1. Để xem toàn bộ thông tin về phiên bản PHP đang được cài đặt trên hệ thống, cũng như kiểm tra PHP có hoạt động trên webserver apache không. Bạn tạo file info.php trong Apache Document Root, khởi động lại httpd service và mở trình duyệt truy cập theo URL: http://IP-server/info.php

# echo "<?php phpinfo();?>" > /var/www/html/info.php

# systemctl restart httpd

PHP Version

Bước 3: Cài đặt Nginx webserver

  1. Cài đặt epel repository
  • yum install epel-release -y

Cài đặt nginx

  • yum install nginx -y

Bước 4: Cấu hình APACHE webserver:

  1. Cấu hình apache webserver lắng nghe port 8080:

#sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf

  1. Tạo cấu trúc thư mục cho các website:

#mkdir -p /var/www/bkns.com/public_html

#mkdir -p /var/www/bkns.xyz/public_htm

  1. Tạo file chứa virtual host:

File virtual host là công cụ định cấu hình cho nhiều site khác nhau và điều khiển Apache để phản hồi lại các miền truy cập. Đầu tiên ta cần cài danh mục lưu trữ virtual host cũng như danh mục thông báo cho Apache rằng virtual host đã sẵn sàng phục vụ truy cập. Danh mục sites-availablee sẽ chứa các file virtual host, trong khi danh mục sites-enabledd sẽ chứ các link tới virtual host mà chúng ta muốn đưa ra. Ta có thể tạo cả hai danh mục này bằng cách:

#mkdir /etc/httpd/sites-availablee

#mkdir /etc/httpd/sites-enabledd

Tiếp theo là lệnh cho Apache tìm virtual host trong danh mục sites-enabledd:

#vi /etc/httpd/conf/httpd.conf                 

Thêm dòng:

text
#IncludeOptional sites-enabledd/*.conf
  1. Tạo file virtual host:

# vi /etc/httpd/sites-availablee/bkns.com.conf

text
# vi /etc/httpd/sites-availablee/bkns.xyz.conf
  1. Tạo một link tượng trưng cho mỗi các virtual host đó trong mục sites-enabledd:

ln -s /etc/httpd/sites-availablee/bkns.com.conf /etc/httpd/sites-enabledd/bkns.com.conf

ln -s /etc/httpd/sites-availablee/bkns.xyz.conf /etc/httpd/sites-enabledd/bkns.xyz.conf

  1. Tạo nội dung cho 2 web bkns.com và bkns.xyz:

# vi /var/www/bkns.com/public_html/index.html

Success! Welcome to BKNS !

# vi /var/www/bkns.xyz/public_html/index.html

Success! Welcome to BKNS !!!!!!!!!!!!!!!!!!!!!

Bước 5: Cấu hình NGINX webserver:

  1. Thay đổi cấu hình file nginx.conf:

# mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# vi /etc/nginx/nginx.conf

text
worker_processes 4;

pid /var/run/nginx.pid;

events {

        worker_connections 768;

}

http {

        sendfile on;

        tcp_nopush on;

        tcp_nodelay on;

        keepalive_timeout 65;

        types_hash_max_size 2048;




        include /etc/nginx/mime.types;

        default_type application/octet-stream;




        access_log /var/log/nginx/access.log;

        error_log /var/log/nginx/error.log;




        gzip on;

        gzip_disable "msie6";

        gzip_min_length  1100;

        gzip_buffers  4 32k;

        gzip_types    text/plain application/x-javascript text/xml text/css;




        open_file_cache          max=10000 inactive=10m;

        open_file_cache_valid    2m;

        open_file_cache_min_uses 1;

        open_file_cache_errors   on;




        ignore_invalid_headers on;

        client_max_body_size    8m;

        client_header_timeout  3m;

        client_body_timeout 3m;

        send_timeout     3m;

        connection_pool_size  256;

        client_header_buffer_size 4k;

        large_client_header_buffers 4 32k;

        request_pool_size  4k;

        output_buffers   4 32k;

        postpone_output  1460;




        include /etc/nginx/conf.d/*.conf;

        include /etc/nginx/sites-enabled/*;

}
  1. Tạo file chứa cấu hình virtual host cho mỗi website trong NGINX:

#mkdir /etc/nginx/sites-available /

#mkdir /etc/nginx/sites-enabled/

  1. Tạo file cấu hình của vhost sẽ được lưu trong đường dẫn /etc/nginx/conf.d/ và /etc/nginx/sites-enabled/

# vi /etc/nginx/conf.d/bkns.com.conf

text
#vi /etc/nginx/conf.d/bkns.xyz.conf

Bước 6: Khởi động lại cấu hình 2 webserver và kiểm tra kết quả nhận được:

#service httpd restart

#service nginx restart

    • Kiểm tra cấu hình Nginx Reverse Proxy đã đúng chưa:

Dùng lệnh netstat -nplt để kiểm tra nginx đã dùng cổng 80 và apache dùng cổng 8080 chưa.

Check port running

Thử tắt apache truy cập website báo lỗi 502 bad gateway tức là đã thành công.

    • Kết quả truy cập web:
Nginx running
Nginx running

Tới đây chúng ta đã cài đặt thành công Nginx Reverse Proxy giúp làm tăng sức mạnh cho máy chủ website của mình.

Chúc các bạn thành công.