Skip to content

Chia Sẻ Thủ Thuật

  • Sample Page

Chia Sẻ Thủ Thuật

  • Home » 
  • Thủ Thuật Máy Tính » 
  • Hướng Dẫn Chi Tiết Cài Đặt và Cấu Hình Reverse Proxy Với Nginx Trên Ubuntu

Hướng Dẫn Chi Tiết Cài Đặt và Cấu Hình Reverse Proxy Với Nginx Trên Ubuntu

By Administrator Tháng 8 22, 2025 0
Các thiết bị NAS và máy chủ nhỏ có thể cài đặt Linux để chạy Nginx reverse proxy
Table of Contents

Xu hướng tự lưu trữ (self-hosted) đang ngày càng phổ biến, khi nhiều người dùng mong muốn giảm sự phụ thuộc vào các dịch vụ đám mây và giữ dữ liệu của họ an toàn trên mạng nội bộ. Tuy nhiên, sau khi thiết lập một vài ứng dụng dưới dạng container hoặc dịch vụ riêng lẻ, chẳng hạn như sử dụng Portainer để đơn giản hóa việc quản lý, một vấn đề thường gặp là việc truy cập từng dịch vụ thông qua địa chỉ IP và cổng (port) riêng biệt của chúng trở nên bất tiện và khó khăn. Điều này tạo ra rào cản lớn, khiến người dùng dễ nản chí khi làm quen với các ứng dụng tự lưu trữ.

Để khắc phục vấn đề này, việc thiết lập một reverse proxy (máy chủ proxy ngược) cho phép bạn truy cập tất cả các ứng dụng tự lưu trữ từ một địa chỉ IP duy nhất. Điều này không chỉ đơn giản hóa việc truy cập và quản lý mà còn mang lại nhiều lợi ích về bảo mật và hiệu suất. Mặc dù có nhiều lựa chọn khả thi để triển khai reverse proxy, Nginx (phát âm là “engine x”) là một trong những giải pháp phổ biến và lâu đời nhất. Nginx là phần mềm miễn phí, mã nguồn mở, dễ cài đặt, và bạn sẽ có một reverse proxy hoạt động hiệu quả chỉ trong thời gian ngắn. Bài viết này sẽ hướng dẫn bạn chi tiết từng bước để cài đặt và cấu hình Nginx làm reverse proxy trên hệ điều hành Ubuntu.

Tại Sao Cần Reverse Proxy và Nginx Là Lựa Chọn Tối Ưu?

Việc truy cập các ứng dụng tự lưu trữ bằng nhiều địa chỉ IP và cổng khác nhau không chỉ gây bất tiện mà còn tiềm ẩn nhiều rủi ro về bảo mật. Mỗi cổng mở là một điểm tiềm năng cho các cuộc tấn công. Hơn nữa, việc nhớ và nhập đúng từng địa chỉ IP:port cho mỗi dịch vụ là một thách thức lớn đối với người dùng thông thường, làm giảm trải nghiệm sử dụng.

Reverse proxy ra đời để giải quyết triệt để vấn đề này. Nó đóng vai trò như một cầu nối, nhận yêu cầu từ người dùng bên ngoài và chuyển tiếp chúng đến các máy chủ ứng dụng bên trong mạng nội bộ. Nhờ đó, người dùng chỉ cần tương tác với một địa chỉ IP hoặc tên miền duy nhất của reverse proxy, sau đó reverse proxy sẽ tự động định tuyến yêu cầu đến dịch vụ phù hợp.

Nginx là một lựa chọn nổi bật cho vai trò reverse proxy vì nhiều lý do:

  • Miễn phí và Mã nguồn mở: Giúp giảm chi phí và cho phép cộng đồng phát triển, kiểm tra liên tục.
  • Hiệu suất cao và ổn định: Được tối ưu hóa để xử lý hàng nghìn kết nối đồng thời, lý tưởng cho các môi trường sản xuất.
  • Đa năng: Ngoài reverse proxy, Nginx còn có thể được sử dụng làm máy chủ web, cân bằng tải (load balancer), bộ nhớ đệm (cache server), và bộ giảm tải SSL (SSL offloader).
  • Bảo mật: Cung cấp các tính năng bảo mật như kiểm soát truy cập, lọc yêu cầu và bảo vệ chống lại các cuộc tấn công DDoS.
  • Dễ cài đặt và cấu hình: Với một vài lệnh cơ bản, bạn có thể thiết lập Nginx và bắt đầu sử dụng.

Chuẩn Bị Trước Khi Bắt Đầu

Để thiết lập Nginx, bạn không cần quá nhiều kỹ năng phức tạp, chỉ cần một chút kiến thức cơ bản về dòng lệnh. Hướng dẫn này được xây dựng dựa trên Ubuntu hoặc Ubuntu Server, nhưng bạn hoàn toàn có thể tìm thấy gói cài đặt Nginx cho hầu hết các bản phân phối Linux phổ biến khác.

Dưới đây là những gì bạn cần chuẩn bị:

  • Hệ điều hành Ubuntu: Đã được cài đặt trên máy ảo, máy chủ vật lý, hoặc thiết bị NAS (Network Attached Storage) của bạn.
  • Quyền sudo hoặc root: Để thực hiện các lệnh cài đặt và cấu hình hệ thống.
  • Truy cập vào terminal hoặc giao diện dòng lệnh (CLI).

Các thiết bị NAS và máy chủ nhỏ có thể cài đặt Linux để chạy Nginx reverse proxyCác thiết bị NAS và máy chủ nhỏ có thể cài đặt Linux để chạy Nginx reverse proxy

Cài Đặt Nginx Trên Ubuntu: Hướng Dẫn Từng Bước

Nginx là một chương trình tuyệt vời cho bất kỳ ai muốn mở rộng home lab của mình và học hỏi các kỹ năng quản lý máy chủ. Đây cũng là một trong những cách tốt nhất để tạo reverse proxy trên Ubuntu. Nginx đã tồn tại được vài thập kỷ, liên tục được tối ưu hóa và bổ sung tính năng, cho phép nó thực hiện cân bằng tải, giảm tải SSL, và bảo vệ chống lại các cuộc tấn công DDoS.

Để cài đặt Nginx trên Ubuntu, chúng ta chỉ cần sử dụng terminal.

Cập Nhật Hệ Thống và Cài Đặt Nginx

  1. Đảm bảo kho lưu trữ phần mềm được cập nhật bằng cách chạy lệnh:
    sudo apt update
  2. Cài đặt Nginx với lệnh sau:
    sudo apt install nginx

Cấu Hình Tường Lửa UFW cho Nginx

Tường lửa trên Ubuntu là ufw (Uncomplicated Firewall). Nginx sẽ tự động đăng ký các profile của mình với UFW, giúp công việc cấu hình trở nên dễ dàng hơn. Lệnh sau sẽ liệt kê các ứng dụng đã được cấu hình sẵn:

sudo ufw app list

Màn hình terminal Ubuntu hiển thị danh sách ứng dụng tường lửa UFW đã đăng ký sau khi cài NginxMàn hình terminal Ubuntu hiển thị danh sách ứng dụng tường lửa UFW đã đăng ký sau khi cài Nginx

Kết quả có thể hiển thị một loạt các ứng dụng đã cấu hình, trong đó các profile liên quan đến Nginx phổ biến nhất bao gồm:

  • CUPS: Common Unix Printing System, xử lý các dịch vụ in ấn trên mạng.
  • Nginx Full: Kích hoạt toàn bộ máy chủ web Nginx với cả lưu lượng HTTP và HTTPS.
  • Nginx HTTP: Chỉ kích hoạt lưu lượng HTTP.
  • Nginx HTTPS: Chỉ kích hoạt lưu lượng HTTPS.
  • OpenSSH: Cho phép lưu lượng SSH đi vào máy chủ.

Bây giờ là lúc cấp các quyền cơ bản để các dịch vụ này có thể hoạt động trên máy chủ và reverse proxy sau khi chúng ta thiết lập.

  1. Ví dụ, nếu chúng ta muốn dịch vụ Nginx HTTP có quyền truy cập, chúng ta nhập:
    sudo ufw allow 'Nginx HTTP'

    Bạn có thể chọn Nginx Full nếu muốn cho phép cả HTTP và HTTPS.

  2. Tiếp theo, chúng ta phải đảm bảo tường lửa đang hoạt động với:
    sudo ufw enable
  3. Và cuối cùng, kiểm tra xem dịch vụ đã được thiết lập đúng chưa với:
    sudo ufw status

Kết quả kiểm tra trạng thái tường lửa UFW trên Ubuntu, cho thấy Nginx HTTP đã được cho phépKết quả kiểm tra trạng thái tường lửa UFW trên Ubuntu, cho thấy Nginx HTTP đã được cho phép

Kiểm Tra Trạng Thái Hoạt Động của Nginx

Việc cuối cùng trước khi tiếp tục là đảm bảo Nginx đang chạy:

sudo systemctl status nginx

Màn hình terminal Ubuntu hiển thị Nginx đang hoạt động (active running) sau khi cài đặtMàn hình terminal Ubuntu hiển thị Nginx đang hoạt động (active running) sau khi cài đặt

Nó sẽ hiển thị trạng thái active (running) màu xanh lá cây. Nếu không, hãy khởi động Nginx bằng:

sudo systemctl start nginx

Xác Minh Cài Đặt Nginx Qua Trình Duyệt

Bạn cũng có thể xác minh Nginx đã được cài đặt và đang chạy bằng cách truy cập địa chỉ IP của máy chủ trong bất kỳ trình duyệt web nào trên mạng cục bộ của bạn. Ví dụ, trong trường hợp này, đó là HTTP://192.168.7.171. Nếu bạn thấy trang hiển thị thông báo “Welcome to nginx!”, thì bạn đã cài đặt đúng cách.

Trang "Welcome to Nginx!" hiển thị trên trình duyệt, xác nhận Nginx đã được cài đặt thành côngTrang "Welcome to Nginx!" hiển thị trên trình duyệt, xác nhận Nginx đã được cài đặt thành công

Thiết Lập Reverse Proxy Cơ Bản Với Nginx

Để reverse proxy hoạt động, chúng ta cần thực hiện một số dọn dẹp ban đầu vì cài đặt Nginx mặc định có thể gây cản trở.

Xóa Cấu Hình Mặc Định và Tạo File Mới

  1. Hủy liên kết tệp cấu hình mặc định bằng cách nhập:
    sudo unlink /etc/nginx/sites-enabled/default
  2. Bây giờ, chúng ta cần một tệp cấu hình mới. Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào bạn cảm thấy thoải mái, ví dụ vim hoặc nano:
    sudo vim /etc/nginx/sites-available/reverse-proxy

    (Nếu bạn không quen với vim, hãy thay thế vim bằng nano.)

Nội Dung File Cấu Hình Reverse Proxy

Đây là một cấu hình cơ bản để bạn bắt đầu:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Ví dụ cấu hình Nginx reverse proxy cơ bản trong file /etc/nginx/sites-available/reverse-proxyVí dụ cấu hình Nginx reverse proxy cơ bản trong file /etc/nginx/sites-available/reverse-proxy

Tệp này chứa chi tiết về một reverse proxy duy nhất đến một dịch vụ. Khối server {...} xử lý mọi yêu cầu khớp với các chi tiết này. Bạn sẽ muốn sử dụng địa chỉ IP và tên máy chủ thực tế của các dịch vụ tự lưu trữ của bạn thay vì các chi tiết giữ chỗ:

  • listen 80;: Cấu hình cổng mà reverse proxy sẽ lắng nghe các yêu cầu đến. Bạn không nhất thiết phải sử dụng cổng 80, nhưng đôi khi nó dễ dàng hơn.
  • server_name localhost;: Thay thế localhost bằng tên miền hoặc địa chỉ IP của ứng dụng tự lưu trữ của bạn mà bạn muốn truy cập. Nếu bạn có nhiều dịch vụ, bạn sẽ tạo các khối server riêng cho từng tên miền/IP.
  • location / {...}: Điều này cấu hình đường dẫn URI để khớp với bất kỳ yêu cầu đến nào. Dấu / có nghĩa là mọi yêu cầu đến địa chỉ server_name sẽ được xử lý bởi khối này.
  • proxy_pass http://127.0.0.1:8000;: Đây là địa chỉ máy chủ backend mà Nginx sẽ proxy đến. Thay đổi nó thành địa chỉ IP và cổng chính xác cho bất kỳ container Docker hoặc dịch vụ nào khác mà bạn đang chuyển thông tin đến.
  • *`proxy_set_header ;`**: Các dòng này thiết lập các tiêu đề HTTP cho yêu cầu được proxy, bao gồm thông tin bổ sung về yêu cầu của máy khách. Chúng giúp máy chủ backend nhận biết được yêu cầu thực sự đến từ đâu (thay vì chỉ thấy IP của Nginx).

Sau khi bạn đã lưu và thoát khỏi trình soạn thảo (nếu dùng vim, nhấn Esc rồi gõ :wq và Enter), đã đến lúc kích hoạt và kiểm tra proxy.

Kiểm Tra và Kích Hoạt Reverse Proxy

Bây giờ là lúc đưa tất cả vào thực tế, để các yêu cầu dữ liệu đến ứng dụng tự lưu trữ của chúng ta được định tuyến phù hợp.

  1. Đầu tiên, chúng ta phải liên kết tệp cấu hình mà chúng ta vừa tạo:
    sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/

    Lệnh này tạo một liên kết tượng trưng (symbolic link) trong thư mục sites-enabled. Điều này cho phép Nginx đọc cấu hình mới của bạn. Bằng cách sử dụng symbolic link, bạn có thể thay đổi cấu hình gốc ở sites-available và chỉ cần xóa liên kết tượng trưng nếu muốn vô hiệu hóa, thay vì chỉnh sửa trực tiếp file đang hoạt động.

  2. Bây giờ, hãy kiểm tra cú pháp cấu hình Nginx để đảm bảo không có lỗi:
    sudo nginx -t

Kết quả kiểm tra cú pháp Nginx thành công, báo lỗi 0 và cảnh báo 0Kết quả kiểm tra cú pháp Nginx thành công, báo lỗi 0 và cảnh báo 0

  1. Và khởi động lại máy chủ Nginx để áp dụng các thay đổi của chúng ta:
    sudo systemctl restart nginx

Kiểm Tra Hoạt Động của Reverse Proxy (Thực Chiến)

Để xem mọi thứ có đang hoạt động như mong đợi hay không, chúng ta có thể tạo một trang web nhỏ hiển thị việc định tuyến localhost đang hoạt động. Nếu bạn đã có tệp cấu hình trỏ đến một container Docker hoặc dịch vụ tự lưu trữ đã được cấu hình trước đó, bạn có thể bỏ qua bước tạo trang thử nghiệm và chuyển sang bước sử dụng trình duyệt web để kiểm tra.

  1. Tạo một thư mục trang kiểm tra với:
    sudo mkdir example_backend && cd example_backend
  2. Tạo một tệp HTML đơn giản để làm trang đích:
    sudo vim index.html
  3. Thêm một số mã cơ bản để hiển thị:
    <title>NGINX backend</title><h1>It works!</h1>
  4. Lưu và đóng tệp (nếu dùng vim, nhấn Esc rồi gõ :wq và Enter).
  5. Bây giờ chúng ta chạy máy chủ backend từ cùng thư mục đó. Python 3 có một module máy chủ HTTP tích hợp rất tiện lợi:
    sudo python3 -m http.server 8000

    Lệnh này sẽ khởi động một máy chủ web đơn giản trên cổng 8000, phục vụ nội dung của thư mục hiện tại.

  6. Mở trình duyệt web và truy cập địa chỉ IP của máy chủ Nginx của bạn (ví dụ: http://192.168.7.171). Nginx đang lắng nghe trên cổng 80 và sẽ proxy yêu cầu đến dịch vụ Python của bạn trên cổng 8000.

Trang web &quot;It works!&quot; hiển thị qua Nginx reverse proxy, xác nhận hoạt động thành côngTrang web "It works!" hiển thị qua Nginx reverse proxy, xác nhận hoạt động thành công

Như bạn có thể thấy, reverse proxy chặn yêu cầu từ máy khách và chuyển tiếp nó đến máy chủ backend (trong trường hợp này là máy chủ Python). Sau đó, backend phản hồi với trang web, và chúng ta biết rằng reverse proxy đã được thiết lập chính xác. Nếu bạn đang trỏ đến một dịch vụ tự lưu trữ hiện có, trang web hiển thị sẽ là trang quản trị hoặc trang chính của dịch vụ đó.

Kết Luận

Chúc mừng! Giờ đây bạn đã có một reverse proxy cơ bản được thiết lập bằng Nginx trên hệ điều hành Ubuntu. Mục tiêu chính là đơn giản hóa việc truy cập các ứng dụng tự lưu trữ từ một địa chỉ IP duy nhất đã được hoàn thành. Điều này giúp bạn dễ dàng quản lý và sử dụng các dịch vụ trong home lab của mình hơn rất nhiều, đồng thời nâng cao trải nghiệm tổng thể.

Tuy nhiên, đây chỉ là khởi đầu của những gì Nginx có thể làm được. Nền tảng mạnh mẽ này còn cho phép bạn triển khai các tính năng nâng cao như cân bằng tải (phân phối lưu lượng truy cập giữa nhiều máy chủ), mã hóa và giải mã SSL/TLS (giúp giảm tải công việc mã hóa cho các dịch vụ backend), xử lý các biện pháp bảo mật như danh sách kiểm soát truy cập (ACL) và lọc yêu cầu, cũng như lưu trữ bộ đệm (caching) dữ liệu để truy cập nhanh hơn.

Hãy tiếp tục khám phá và tận dụng tối đa sức mạnh của Nginx để tối ưu hóa hạ tầng tự lưu trữ của bạn. Đừng ngần ngại thử nghiệm thêm các cấu hình phức tạp hơn khi bạn đã nắm vững những kiến thức cơ bản này. Nếu bạn có bất kỳ câu hỏi hoặc kinh nghiệm nào muốn chia sẻ, hãy để lại bình luận phía dưới!

Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Khám Phá 5 Ứng Dụng Windows Mạnh Mẽ Ngoài Microsoft Store

Next post

LaunchBox: Biến Trải Nghiệm Giả Lập Game Retro Từ Hỗn Loạn Thành Hoàn Hảo

Administrator

Related Posts

Categories Thủ Thuật Máy Tính Hướng Dẫn Chi Tiết Cài Đặt và Cấu Hình Reverse Proxy Với Nginx Trên Ubuntu

Cân Bằng Hiệu Năng, Thẩm Mỹ và Ngân Sách Khi Lắp Ráp PC: Hướng Dẫn Toàn Diện

Categories Thủ Thuật Máy Tính Hướng Dẫn Chi Tiết Cài Đặt và Cấu Hình Reverse Proxy Với Nginx Trên Ubuntu

DirectStorage: Tối Ưu Hiệu Suất Gaming PC Có Đáng Để Bạn Quan Tâm?

Categories Thủ Thuật Máy Tính Hướng Dẫn Chi Tiết Cài Đặt và Cấu Hình Reverse Proxy Với Nginx Trên Ubuntu

Cách Khôi Phục Tính Năng Desktop Peek Trên Windows 11 Với Windhawk Mod

Leave a Comment Hủy

Recent Posts

  • Cân Bằng Hiệu Năng, Thẩm Mỹ và Ngân Sách Khi Lắp Ráp PC: Hướng Dẫn Toàn Diện
  • Xbox Developer_Direct 2025: Hé Lộ Những Tựa Game “Bom Tấn” Sắp Ra Mắt
  • Microsoft Ngừng Bán Phim Và Chương Trình TV: Tương Lai Nào Cho Nội Dung Đã Mua?
  • Sở Hữu Smart TV 4K Pioneer Xumo 55 Inch Giá Chỉ 200 USD: Ưu Đãi Không Thể Bỏ Lỡ
  • DirectStorage: Tối Ưu Hiệu Suất Gaming PC Có Đáng Để Bạn Quan Tâm?

Recent Comments

Không có bình luận nào để hiển thị.
Copyright © 2025 Chia Sẻ Thủ Thuật - Powered by Nevothemes.
Offcanvas
Offcanvas

  • Lost your password ?