Nginx làm Reverse Proxy cho Apache – Apache2 là máy chủ web phổ biến nhất hiện nay. Nginx là số 2, tuy nhiên Nginx cũng có thể sử dụng làm Reverse Proxy cho Apache. Hướng dẫn ngắn gọn này sẽ giới thiệu cho các bạn cách cấu hình máy chủ web Nginx như một Reverse Proxy cho Apache2 trên Ubuntu.
Cả hai máy chủ đều có điểm mạnh và điểm yếu, khi được kết hợp và cấu hình đúng cách, chúng có thể mang đến hiệu quả tốt hơn cho server của bạn.
Trong bài này, chúng tôi sẽ cài đặt cả hai máy chủ Nginx và Apache2 .. sau đó cấu hình Nginx để nghe trên cổng 80 trong khi Apache lắng nghe trên cổng 8080. Cả hai đều không thể nghe trên cùng một cổng. Khi lưu lượng truy cập web đến, Nginx sẽ tiếp nhận và chuyển tiếp tới Apache.
Mục lục
Ưu điểm
Nginx rất đa nhiệm nên chúng ta có thể sử dụng nó đồng hành cùng với Apache mà không gây ảnh hưởng gì tới server, thậm chí bạn còn tiết kiệm được nhiều tài nguyên hơn, website tải nhanh hơn.
Apache để xử lý PHP thông qua module mod_php của nó, còn Nginx sẽ có nhiệm vụ đọc dữ liệu nhận được, xử lý các file tĩnh, cache (Nginx làm rất tốt trong việc xử lý cache).
Ngay khi bạn đã sẵn sàng, hãy làm theo các bước dưới đây:
Cấu hình Nginx làm Reverse Proxy cho Apache trên Ubuntu
Bước 1: Cài đặt Apache
Để cài đặt Apache và bật mod rewrite, mod userdir các bạn xem bài hướng dẫn sau
Tuy nhiên tại bước cấu hình virtualhost các bạn sửa cấu hình thành như sau:
<VirtualHost 127.0.0.1:8080>; ServerAdmin [email protected] ServerName domain.com ServerAlias www.domain.com DocumentRoot /home/domain.com/public_html UseCanonicalName OFF ErrorLog /home/domain.com/logs/error.log CustomLog /home/domain.com/logs/access.log combined <Directory /home/domain.com/public_html> AllowOverride AuthConfig FileInfo Limit Options=IncludesNOEXEC,MultiViews,SymLinksIfOwnerMatch,FollowSymLinks,None Options -ExecCGI -Includes +IncludesNOEXEC -Indexes </Directory> </VirtualHost>
Sau khi cài đặt Apache, hãy chạy các lệnh dưới đây để thay đổi cổng mặc định Apache thành cổng 8080
sudo nano /etc/apache2/ports.conf
Sửa dòng
Listen 80
Thành
Listen 127.0.0.1:8080
Bấm ctrl + o và ctrl + x để lưu file và thoát trình soạn thảo nano
Tiếp theo khởi động lại Apache bằng lệnh sau
sudo service apache2 restart
Bước 2: Cài đặt Nginx làm Reverse Proxy cho Apache
Cài đặt Nginx rất dễ dàng. để làm điều đó, hãy chạy các lệnh bên dưới
sudo apt-get update sudo apt-get install nginx
Sau khi cài đặt Nginx, hãy chạy lệnh dưới đây để khởi động Nginx.
sudo service nginx start
Bước 3: Cấu hình Nginx làm Reverse Proxy cho Apache
Đầu tiên tạo một thư mục gốc cho website của bạn (domain.com). Trong hướng dẫn này, chúng ta sẽ tạo nó trong /home/domain.com/public_html (Nếu các bạn đã tạo ở bước cài đặt Apache thì bỏ qua bước này nhé)
sudo mkdir -p /home/domain.com/public_html
Sau đó thay đổi quyền trên thư mục để cho phép Nginx và Apache2 truy cập nội dung.
sudo chown -R www-data:www-data /home/domain.com/public_html sudo chmod -R 775 /home/domain.com/public_html
Tiếp theo, chạy lệnh dưới đây để tạo một virtualhost cho website.
sudo nano /etc/nginx/sites-available/domain
Thêm đoạn code sau vào file
server { listen 80; listen [::]:80; server_name domain.com www.domain.com; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; location / { proxy_pass http://127.0.0.1:8080; } }
Tiếp theo các bạn bấm ctrl + o và ctrl + x để lưu file và thoát khỏi trình soạn thảo nano. Nếu server của các bạn chưa cài đặt nano các bạn có thể cài đặt bằng lệnh sau:
sudo apt install nano
Tiếp theo, kích hoạt trang Nginx bằng cách chạy các lệnh bên dưới
sudo ln -s /etc/nginx/sites-available/domain /etc/nginx/sites-enabled/
Khởi động lại Nginx
service nginx restart
Bước 4: Cài đặt PHP và MariaDB
Kiểm tra thành quả của việc cài đặt Nginx làm Reverse Proxy cho Apache
Để kiểm tra xem cấu hình của chúng ta đã đúng chưa chúng ta tạo một file index.html trong thư mục /home/domain.com/public_html và tiến hành truy cập thử để xem kết quả.
<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <p>Chào mừng bạn đến với Sanvu88.net</p> </body> </html>