Hướng dẫn thiết lập NGINX làm Reverse Proxy

Yêu cầu cài đặt
– Hệ điều hành hoặc server linux tương thích centos/ubuntu/…
– Có quyền truy cập và tài khoản người dùng root hoặc sudo

I. Cài đặt NGINX

Đảm bảo NGINX đã cài đặt trên máy chủ. Hãy thực hiện theo các bước bên dưới

1. Cập nhật danh sách các gói apt repository

sudo apt update 

2. Cài đặt NGINX bằng lệnh sau

sudo apt install nginx 

Chờ quá trình cài đặt hoàn tất.

3. Kiểm tra phiên bản NGINX

nginx -v

Lệnh hiện ra thông tin phiên bản NGINX, cho biết quá trình cài đặt đã thành công.

II. Khởi động NGINX và cấu hình NGINX tự khởi chạy khi khởi động lại

Các lệnh sau đây khởi động NGINX và tự động chạy NGINX sau khi khởi động lại
1. Khởi động service NGINX bằng lệnh systemctl

sudo systemctl start nginx

2. Thiết lập cấu hình NGINX tự động khởi chạy sau khi khởi động lại, hãy chạy lệnh enable

sudo systemctl enable nginx

Lệnh thực thi tập lệnh để cho phép NGINX khởi chạy tự động.

3. Để kiểm tra trạng thái máy chủ NGINX, hãy dùng lệnh:

sudo systemctl status nginx

Thông tin hiển thị trạng thái Active: active (running) cho thấy dịch vụ đang chạy.

III. Hủy liên kết (symlolic link) cấu hình mặc định

NGINX sử dụng tập cấu hình được liên kết mặc định. Tạo reverse proxy cần tạo và liên kết thủ công. Để tránh các xung đột tiềm ẩn ngoài ý muốn, hay dùng lệnh sau:

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

Lệnh hủy liên kết tệp cấu hình mặc định.

IV. Tạo tệp cấu hình mới

Hãy cấu hình theo dưới đây để tạo tệp cấu hình mới:
1. Tạo một tệp mới trong thư mục NGINX /etc/nginx/site-available 

sudo vi /etc/nginx/sites-available/reverse-proxy

2. Thiết lập cấu hình NGINX để hoạt động như một reverse proxy.
Thêm cấu hình mẫu sau vào tệp:

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;
    }
}

Cấu hình bao gồm server {…} xử lí các yêu cầu phù hợp với điều kiện được chỉ định gồm các dữ liệu:

  • listen 80: máy chủ nhận yêu cầu từ HTTP đến cổng 80
  • server_name localhost: tên miền của web server muốn sử dụng. Ví dụ này sử dụng localhost để kiểm tra thử nghiệm hoạt động của reverse proxy
  • location {…}: cấu hình cho đường dẫn URI được chỉ định
  • proxy_pass http://127.0.0.1:8000: Máy chủ web mà proxy NGINX yêu cầu. Ví dụ đang sử dụng IP máy chủ cục bộ trên cổng 8000. Có thể thay thế sử dụng URL máy chủ khác
  • proxy_set_header: Thiết lập tiêu đề HTTP cho yêu cầu proxy. Các tiêu đề đề cấp đến máy chủ phụ và cung cấp bổ sung thông tin về yêu cầu của client. Bao gồm Header, IP, scheme (HTTP và HTTPS).

Lưu ý thay thế cổng, server_name và URL máy chủ phụ bằng dữ liệu thực tế.
Ví dụ này chuyển tiếp tất cả các yêu cầu thực hiện đến localhost đến địa chỉ http://127.0.0.1:8000

3. Lưu tệp và thoát trình soạn thảo.

V. Liên kết và kích hoạt tệp cấu hình mới

Liên kết tệp cấu hình mới và kích hoạt nó bằng lệnh sau:

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

Thư mục /etc/nginx/sites-enabled chứa các tệp cấu hình đang được sử dụng.
NGINX sử dụng các cấu hình được liên kết mới /etc/nginx/sites-enabled để xử lí các yêu cầu mà không sao chép các tệp cấu hình.

VI. Kiểm tra và khởi động lại NGINX

Kiểm tra cú pháp cấu hình bằng lệnh sau:

sudo nginx -t

Để áp dụng các thay đổi, hãy khởi động lại máy chủ NGINX:

sudo systemctl restart nginx

Việc khởi động lại không phát sinh lỗi cú pháp, cho biết reverse proxy NGINX đã hoạt động hãy kiểm tra

VII. Kiểm tra Reverse Proxy

Để kiểm tra Reverse Proxy, chúng ta cần một web server hoặc ứng dụng chạy backend, trong bài hướng dẫn này, Long Vân sử dụng backend là một ứng dụng với python. Cụ thể như sau:
1. Tạo một thư mục mới gồm một trang index để thử nghiệm:

mkdir web_backend && cd web_backend

Lệnh bao gồm tạo thư mục và truy cập đến thư mục mới.

2. Tạo một tệp index.html mới để làm trang chủ

vi index.html

Máy chủ phụ sẽ hiển thị trang khi client truy cập localhost

3. Thêm đoạn mã sau vào tệp index.html:

<html>
<head>
<title>NGINX backend</title>
</head>
<body>
<h1>Great!</h1>
</body>
</html>

Đây là mã tạo trang HTML cơ bản.

4. Lưu và đóng tệp.

5. Chạy máy chủ phụ trong cùng thư mục với tệp index.html bằng lệnh sau:

python3 -m http.server

Lệnh khởi động máy chủ HTTP với cổng 8000 trang index.html.

6. Chạy kiểm tra curl request tới localhost trong terminal:

curl localhost

Ngoài ra, truy cập thử từ trình duyệt web.

Trong hai trường hợp, Reverse Proxy chuyển tiếp yêu cầu của máy khách tới máy chủ phụ. Máy chủ phụ phản hồi với trang HTML, cho biết Reverse Proxy NGINX được thiết lập chính xác.

Như vậy Long Vân đã hoàn thành hướng dẫn thiết lập NGINX làm Reverse Proxy . Chúc Quý khách thành công!