Cài đặt, cấu hình VPS sử dụng nginx làm reverse proxy apache

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.
2.1 Cài apache và php (cài rồi thì bỏ qua)

  # yum install httpd
  # yum install php php-mysql

2.2 Chỉnh cấu hình Apache


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

Thay
     Listen 80
thành
     Listen 127.0.0.1:8080  // cho Apache lắng nghe từ Nginx

- Thêm VirtualHost

               NameVirtualHost 127.0.0.1:8080

# Define Server document root
   DocumentRoot /var/www/html/
 
# Define the virtual host
<VirtualHost 127.0.0.1:8080>
   ServerName www.yourwebsite.com
   ServerAlias yourwebsite.com
   DocumentRoot /var/www/yourwebsite.com
       <Directory "/var/www/yourwebsite.com">
               Options FollowSymLinks -Includes
               AllowOverride All
               Order allow,deny
               Allow from all
       </Directory>
       RewriteEngine on
</VirtualHost>

Với  /var/www/yourwebsite.com là thư mục chứa mã nguồn (cần tạo trước)


Khởi động apache
service httpd start

2.3 Cài nginx

- Thêm repo
vi /etc/yum.repos.d/nginx.repo
 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

- Cài Nginx

yum install nginx

- Chỉnh file cấu hình 
vi /etc/nginx/conf.d/default.conf

server {
        listen   80; 
        root /var/www/;
        index index.php index.html index.htm; 
        server_name yourwebsite.com;
 
        location / {
        try_files $uri $uri/ /index.php;
        } 
        location ~ \.php$ {       
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080; 
         } 
         location ~ /\.ht {
                deny all;
        }
}

- Khởi động nginx
service nginx start

2.4 Kiểm tra

Dùng lệnh netstart -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.

Hoặc tạo file info.php trong /var/www/yourwebsite.com với nội dung

<php phpinfo(); ?>

Truy cập vào yourwebsite.com/info.php và xem phần Server API có phải là Apache 2.0 Handler hay không, nếu phải thì thành công.

Tham khảo: 

Powered by WHMCompleteSolution