Khuyến mãi
Trang chủ » Hướng dẫn » Cài đặt Nginx Reverse Proxy cho Apache trên centos 7

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

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.

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

  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

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:

#IncludeOptional sites-enabledd/*.conf

  1. Tạo file virtual host:

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

<VirtualHost *:8080>

ServerAdmin webmaster@bkns.com

    DocumentRoot /var/www/bkns.com/public_html

    ServerName bkns.com

    ServerAlias www.bkns.com

    <Directory “/var/www/bkns.com/public_html”>

               AllowOverride All

               Order allow,deny

               Allow from all

    </Directory>

       RewriteEngine on

    ErrorLog logs/bkns.com-error_log

    CustomLog logs/bkns.com-access_log common

</VirtualHost>

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

<VirtualHost *:8080>

ServerAdmin webmaster@bkns.xyz

    DocumentRoot /var/www/bkns.xyz/public_html

    ServerName bkns.xyz

    ServerAlias www.bkns.xyz

    <Directory “/var/www/bkns.xyz/public_html”>

               AllowOverride All

               Order allow,deny

               Allow from all

    </Directory>

       RewriteEngine on

    ErrorLog logs/bkns.xyz-error_log

    CustomLog logs/bkns.xyz-access_log common

</VirtualHost>

  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

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

server {

        listen    80;

        server_name  bkns.com www.bkns.com;

        access_log off;

        error_log  /var/log/httpd/bkns.com-error_log crit;

location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {

        root /var/www/bkns.com/pubic_html;

        }

location / {

        client_max_body_size    10m;

        client_body_buffer_size 128k;

 

        proxy_send_timeout   90;

        proxy_read_timeout   90;

        proxy_buffer_size    128k;

        proxy_buffers     4 256k;

        proxy_busy_buffers_size 256k;

        proxy_temp_file_write_size 256k;

        proxy_connect_timeout 30s;

 

        proxy_redirect  http://www.bkns.com:8080   http://www.bkns.com;

        proxy_redirect  http://bkns.com:8080   http://bkns.com;

 

        proxy_pass   http://127.0.0.1:8080/;

 

        proxy_set_header   Host   $host;

        proxy_set_header   X-Real-IP  $remote_addr;

        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        }

}

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

server {

        listen    80;

        server_name  bkns.xyz www.bkns.xyz;

        access_log off;

        error_log  /var/log/httpd/bkns.xyz-error_log crit;

location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {

        root /var/www/bkns.xyz/pubic_html;

        }

location / {

        client_max_body_size    10m;

        client_body_buffer_size 128k;

 

        proxy_send_timeout   90;

        proxy_read_timeout   90;

        proxy_buffer_size    128k;

        proxy_buffers     4 256k;

        proxy_busy_buffers_size 256k;

        proxy_temp_file_write_size 256k;

        proxy_connect_timeout 30s;

 

        proxy_redirect  http://www.bkns.xyz:8080   http://www.bkns.xyz;

        proxy_redirect  http://bkns.xyz:8080   http://bkns.xyz;

 

        proxy_pass   http://127.0.0.1:8080/;

 

        proxy_set_header   Host   $host;

        proxy_set_header   X-Real-IP  $remote_addr;

        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        }

}

#cp /etc/nginx/conf.d/bkns.xyz.conf /etc/nginx/sites-enabled/bkns.xyz.conf

#cp /etc/nginx/conf.d/bkns.com.conf /etc/nginx/sites-enabled/bkns.com.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 revert đã đú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.

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:

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

Hoangtd

Call Back Icon

Xin chào quý khách!

Quý khách đang cần tư vấn dịch vụ, xin vui lòng nhập số điện thoại để chúng tôi gọi lại.

Tổng đài 24/07: 1900 63 68 09

Đăng ký nhanh dịch vụ

Quý khách vui lòng gửi yêu cầu cho BKNS, chúng tôi sẽ liên hệ lại ngay với bạn.