Cách thiết lập Nginx Reverse Proxy

Trong hệ điều hành Linux, Reverse Proxy đóng vai trò làm cầu nối giữa host (máy khách) và server (máy chủ). Nó nhận yêu cầu của máy khách và chuyển lên server và nhận phản hồi từ server để chuyển tới máy khách, cho nên phản hồi từ nó giống như là một máy chủ vậy. Trong bài này, chúng tôi giải thích kỹ Nginx reverse proxy là gì và cách thiết lập nó trên VPS! Bạn có thể thuê VPS giá rẻ để thực hiện Nginx Reverse Proxy để giúp hạ tầng chạy ổn định.

Client và server liên tục trao đổi thông tin. Thông thường, reverse proxies được dùng như là một web server. Reverse proxy hay gateway được client coi như là một máy chủ web, không cần cấu hình gì đặc biệt. Client lập lệnh truy vấn thông thường và reverse proxy quyết định nơi chuyển thông tin đến và phản hồi như bản thân nó là máy gốc vậy.

Nginx reverse proxy có nhiều ưu điểm, vì vậy nó là kiểu server mã nguồn mở được dùng rộng rãi trên internet.

Ưu điểm của Nginx Reverse Proxy

Hãy cùng tìm hiểu lý do vì sao công cụ này phổ biến đến vậy:

  • Rất đơn giản để triển khai, đồng thời tạo tính bảo mật cao giúp ngăn chặn tấn công web server như DDoS và DoS
  • Nginx Reverse proxy giúp tạo cân bằng tải giữa nhiều server hạ tầng và là giải pháp caching cho những server chậm
  • Nginx không đòi hỏi thiết lập mới cho từng yêu cầu từ client. Nó mặc định dùng một process trên mỗi CPU
  • Nó hoạt động như là server reverse proxy cho các giao thức đa dạng: HTTP, HTTPS, TCP, UDP, SMTP, IMAP, và POP3
  • Nó có thể xử lý hơn 10000 kết nối nhưng chiếm ít dung lượng bộ nhớ. Nginx có thể vận hành nhiều web server khác nhau chỉ từ 1 IP và vẫn có thể phản hồi đúng kết quả tới đúng server trong mạng LAN
  • Nginx là một trong các web server tốt nhất cải thiện tốc độ load cho nội dung tĩnh. Hơn nữa, nó cũng hữu dụng khi đóng vai trò cache nội dung để thực hiện mã hóa SSL để giảm tải cho web server chính
  • Nó cũng hữu dụng để tối ưu nội dung và nén chúng để giảm thời gian tải
  • Nginx có thể thực hiện test A/B mà không cần đặt code JavaScript vào trong trang.

Tất cả những ưu điểm này chỉ là bề nổi! Càng dùng nhiều Nginx Reverse Proxy, bạn sẽ càng khám phá thêm tính năng hay của nó!

Cách thiết lập một Nginx Reverse Proxy?

Quan trọng:

Đầu tiên – chúng ta cần truy cập vào VPS qua SSH. Nếu chưa biết làm, hãy xem qua hướng dẫn PuTTY của chúng tôi!

Thứ hai – khi  sử dụng tài liệu này, bạn sẽ cần có web server Apache dựng sẵn trước và cấu hình để nó hoạt động.

Giờ, chúng ta sẽ cài Nginx lên trước một Apache web server. Chúng tôi chọn Apache server vì nó xử lý nội dung động tốt.

Nên, tất cả nội dung tĩnh sẽ đi tới Nginx, nội dung động sẽ do Apache xử lý. Việc này sẽ cải thiện đáng kể việc chuyển nội dung cho máy khách.

Tiếp theo, chúng tôi sẽ định nghĩa IP address của Nginx Proxy server là 192.x.x.1 và back-end Apache server là 192.x.x.2. Sau khi cài Apache, bạn có thể làm các bước sau:

1. Cài đặt Nginx

Chúng ta dùng lệnh apt command để cài Nginx trên Ubuntu 18.04:

sudo apt-get update
sudo apt-get install nginx

2. Vô hiệu Default Virtual Host

Sau khi cài Nginx, nhập lệnh sau để vô hiệu virtual host:

sudo unlink /etc/nginx/sites-enabled/default

3. Tạo Nginx Reverse Proxy

Sau khi vô hiệu virtual host, bạn cần tạo file gọi là reverse-proxy.conf trong thư mục etc/nginx/sites-available để lưu thông tin reverse proxy.

Để làm vậy, truy cập vào thư mục đó trước bằng lệnh cd:

cd etc/nginx/sites-available/

Tạo file bằng vi editor:

vi reverse-proxy.conf

Trong file này, chúng ta sẽ dán chuỗi sau:

server {
    listen 80;
    location / {
        proxy_pass http://192.x.x.2;
    }
}

Lệnh trên sẽ cho phép proxy pass chuyển dữ liệu qua Nginx reverse proxy sang 192.x.x.2:80, là Apache remote socket. Vì vậy, cả 2 web server – Nginx và Apache chia sẽ chung nội dung.

Sau khi hoàn tất, chỉ cần lưu lại file và thoát khỏi vi editor. Bạn có thể thoát bằng cách nhấn :wq.

Để chuyển dữ liệu tới server khác, bạn có thể dùng ngx_http_proxy_module trong terminal.

Giờ, kích hoạt directives bằng cách link tới /sites-enabled/ bằng lệnh sau:

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

4. Kiểm thử Nginx và Nginx Reverse Proxy

Cuối cùng, chúng ta sẽ kiểm tra cấu hình Nginx và khởi động lại Nginx để kiểm tra hiệu năng. Gõ lệnh sau để xác nhận Nginx đang hoạt động trong Linux terminal:

service nginx configtest
service nginx restart

Lưu ý, nếu nhận kết quả thông báo lỗi, có thể là do Apache chưa được cài đặt.

Lời kết

Có nhiều ưu điểm để setup Nginx reverse proxy trong hệ điều hành Linux. Nó sẽ tăng đáng kể tốc độ và tính bảo mật chống lại malware. Nginx reverse proxy là tiến trình cơ bản trong Linux terminal. Mặc dù cũng có nhiều cách khác để cài và cấu hình nó, tùy vào môi trường bạn đang dùng. Nhưng cách thiết lập trên dễ nhất và giúp bạn dựng được ngay Nginx reverse proxy server.

Author
Tác giả

Hai G.

Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp.