Bài 12: Nginx cơ bản và reverse proxy
Bài này giúp anh hiểu Nginx, server block, reverse proxy và quy trình kiểm tra lỗi 404/502/SSL.
Sau bài này anh sẽ biết:
- Nginx dùng để làm gì.
- Cấu trúc server block cơ bản.
- Proxy request vào backend app.
- Test config và đọc log Nginx.
1. Nginx là gì?
Nginx có thể phục vụ static file hoặc làm reverse proxy đứng trước app Node/Python/PHP. Client gọi domain, Nginx nhận request rồi chuyển vào backend.
2. File/thư mục quan trọng
/etc/nginx/nginx.conf /etc/nginx/sites-available/ /etc/nginx/sites-enabled/ /var/log/nginx/access.log /var/log/nginx/error.log
3. Server block tối thiểu
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
4. Reverse proxy mẫu
server {
listen 80;
server_name app.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;
}
}
5. Lab kiểm tra Nginx
sudo nginx -t sudo systemctl reload nginx systemctl status nginx sudo tail -n 100 /var/log/nginx/error.log curl -I http://127.0.0.1
6. Tình huống thực tế: lỗi 502
502 thường nghĩa là Nginx không nói chuyện được với backend. Kiểm tra backend có chạy không, port có listen không, proxy_pass đúng không và log backend ghi gì.
ss -tulpn | grep 3000 curl -I http://127.0.0.1:3000 sudo tail -n 100 /var/log/nginx/error.log
7. Lỗi thường gặp
- Sửa config nhưng quên
nginx -t. server_namesai domain.- Backend chỉ bind localhost nhưng proxy sai IP/port.
- Permission thư mục web sai.
Lưu ý production: Luôn backup config trước khi sửa và dùng reload thay vì restart nếu có thể.
8. Checklist Nginx
nginx -tpass.- Service active.
- Port 80/443 listen.
- DNS trỏ đúng IP.
- Access/error log không có lỗi mới.
9. Bài tập
- Viết server block static site.
- Viết reverse proxy tới port 3000.
- Mô tả cách debug 502.
Bài tiếp theo: Database cơ bản cho SysAdmin.
