Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Ứng dụng Node.js, Python hay Java của bạn thường chạy ở một cổng như 3000 hoặc 8000, không ai muốn gõ số cổng vào địa chỉ web. Nginx đứng phía trước làm 'lễ tân', nhận mọi yêu cầu ở cổng 80 và 443 rồi chuyển vào đúng ứng dụng phía sau. Đó là reverse proxy.
Reverse proxy là máy chủ trung gian nhận yêu cầu từ người dùng và chuyển tiếp tới các máy chủ bên trong. Người dùng chỉ biết địa chỉ của proxy, không thấy ứng dụng thật. Lợi ích:
Giả sử ứng dụng chạy ở cổng 3000 trên cùng máy. Tạo file cấu hình, thường ở /etc/nginx/sites-available/app.conf (hoặc /etc/nginx/conf.d/ tùy bản phân phối):
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}Các dòng proxy_set_header rất quan trọng: nếu thiếu, ứng dụng sẽ chỉ thấy mọi yêu cầu đến từ 127.0.0.1 và không biết tên miền hay địa chỉ thật của khách.
sudo nginx -t
sudo systemctl reload nginxLuôn chạy nginx -t trước. Lệnh này kiểm tra cú pháp mà không ảnh hưởng dịch vụ đang chạy. Dùng reload thay cho restart để áp dụng cấu hình mới mà không ngắt kết nối hiện có.
location /api/ {
proxy_pass http://127.0.0.1:3000/;
}
location / {
root /var/www/frontend;
try_files $uri /index.html;
}Cấu hình trên chuyển mọi yêu cầu bắt đầu bằng /api/ sang backend, còn lại phục vụ giao diện tĩnh. Chú ý dấu / ở cuối trong proxy_pass vì nó thay đổi cách Nginx ghép đường dẫn. Đây là chỗ nhiều người sai, nên hãy thử kỹ bằng curl.
upstream backend_app {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://backend_app;
}
}Mặc định Nginx chia yêu cầu luân phiên giữa các máy chủ trong khối upstream. Đây cũng là nền tảng cho rolling update và mở rộng ngang.
proxy_set_header.Upgrade và Connection) và dùng HTTP/1.1.Log nằm ở /var/log/nginx/error.log và access.log; hãy dùng tail -f khi gỡ lỗi.
Reverse proxy bằng Nginx là kỹ năng nền tảng khi đưa ứng dụng lên máy chủ thật. Bạn chỉ cần nhớ ba thứ: proxy_pass, các header chuyển tiếp, và thói quen chạy nginx -t trước khi reload.
Nếu bạn muốn đưa một dự án hoàn chỉnh lên VPS từ A đến Z, hãy xem lộ trình học tại codebem.com.
Nguyễn Đình Cường
0 comment