Cài đặt và Cấu hình Nginx trên CentOS 7

Thêm kho lưu trữ EPEL

Trước khi cài đặt Nginx, cần kích hoạt kho lưu trữ EPEL để truy cập vào các gói phần mềm bổ sung:

yum install epel-release -y

Cài đặt máy chủ Nginx

Sau khi đã có EPEL, tiến hành cài đặt Nginx thông qua trình quản lý gói:

yum install nginx -y

Khởi động và cấu hình tường lửa

Khởi động dịch vụ Nginx và thiết lập tường lửa để cho phép lưu lượng HTTP/HTTPS:

systemctl start nginx<br>firewall-cmd --permanent --add-service=http<br>firewall-cmd --permanent --add-service=https<br>firewall-cmd --reload

Để dịch vụ tự động khởi động cùng hệ thống, sử dụng lệnh:

systemctl enable nginx

Quản lý dịch vụ Nginx

Dưới đây là một số lệnh phổ biến để kiểm soát trạng thái dịch vụ:

  • Khởi động: systemctl start nginx
  • Dừng: systemctl stop nginx
  • Khởi động lại: systemctl restart nginx
  • Kiểm tra trạng thái: systemctl status nginx

Chỉnh sửa cấu hình Nginx

Tệp cấu hình chính nằm tại /etc/nginx/nginx.conf. Mở tệp bằng trình soạn thảo vim:

vim /etc/nginx/nginx.conf

Ví dụ cấu hình reverse proxy chuyển tiếp yêu cầu đến ứng dụng chạy ở cổng 5000:

location / {
    proxy_pass http://127.0.0.1:5000/;
    proxy_http_version 1.1;
    proxy_set_header Connection "keep-alive";
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_cache_bypass $http_upgrade;
}

Sau khi chỉnh sửa, lưu tệp và khởi động lại Nginx để áp dụng thay đổi:

systemctl restart nginx

Cân bằng tải với upstream

Để phân phối tải giữa nhiều máy chủ nội bộ, định nghĩa khối upstream như sau:

upstream backend_nodes {
    ip_hash;
    server 127.0.0.1:8006 weight=10;
    server 127.0.0.1:8007 down;
    server 127.0.0.1:8008 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:8009 backup;
}

location / {
    proxy_pass http://backend_nodes/;
    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;
}

Giải thích phương thức phân phối tải

  • Round-robin (mặc định): Yêu cầu được phân phối tuần tự đến từng máy chủ.
  • Weight: Gán tỷ lệ phân phối theo trọng số, phù hợp khi hiệu năng máy chủ khác nhau.
  • ip_hash: Dựa trên địa chỉ IP người dùng để đảm bảo phiên làm việc ổn định.
  • backup: Máy chủ dự phòng chỉ được dùng khi các máy chính không khả dụng.
  • max_fails & fail_timeout: Quy định số lần thử thất bại trước khi tạm loại khỏi nhóm.

Phân biệt X-Real-IP và X-Forwarded-For

Khi có nhiều lớp proxy:

  • X-Real-IP: Chỉ lưu địa chỉ IP thực của client.
  • X-Forwarded-For: Lưu danh sách các IP đã đi qua, mỗi proxy thêm một địa chỉ vào cuối chuỗi.

Ví dụ: X-Forwarded-For: 203.0.113.1, 198.51.100.1 cho thấy yêu cầu đi từ client qua hai proxy.

Gỡ cài đặt Nginx (nếu cần)

Nếu muốn gỡ hoàn toàn Nginx và cấu hình:

yum remove nginx -y<br>yum autoremove -y

Lệnh này xóa gói Nginx và các phụ thuộc không còn cần thiết.

Thẻ: nginx centos7 reverse-proxy load-balancing firewall-cmd

Đăng vào ngày 5 tháng 10 lúc 06:31