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!