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/$release...
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:

https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

http://nginx.com/resources/admin-guide/reverse-proxy/

13/09/2021
Was this article helpful?