- Tổng đài 24/7: 1800 646 881
- Đăng nhập
- 3
Ở bài viết này, chúng ta sẽ cùng tìm hiểu các vấn đề sau đây:
Ok, nếu bạn đã sẵn sàng, chúng ta hãy cùng bắt đầu ngay thôi nào.
Reverse Proxy hay còn gọi là Proxy ngược, nó đảm nhiệm vai trò tiếp nhận yêu cầu của khách hàng sau đó chuyển yêu cầu đó đến một hoặc nhiều máy chủ khác được chỉ định.
Các phản hồi của máy chủ cũng được Reverse Proxy nhận và phản hồi tới ứng dụng khách.
Nhờ vào khả năng mở rộng cũng như hiệu suất tuyệt vời mà Nginx trở thành một lựa chọn được ưa chuộng hơn để làm proxy reverse cho các máy chủ HTTP và máy chủ khác.
Cấu hình Nginx được sử dụng rộng rãi ở các ứng dụng sử dụng Node.js, Python hay Java.
Giả sử rằng Nginx đã được cấu hình trên các máy chủ như Ubuntu, CentOS hay Debian.
Khi cấu hình Nginx làm reverse proxy cho máy chủ HTTP, đầu tiên bạn cần mở tệp và thiết lập miền của máy chủ, chỉ định vị trí máy chủ được ủy quyền bên trong tệp đó.
Câu lệnh như sau:
{{EJS0}}
Câu lệnh trên bạn có thể thấy, chỉ thị proxy_pass là URL của máy chủ, bạn có thể sử dụng giao thức HTTP hoặc HTTPS. Trong URL chứa một trên miền hoặc địa chỉ IP cùng với một port và URI để định vị vị trí.
Với cấu hình trên, nghĩa là Nginx phải chuyển tất cả các yêu cầu đến location /app hay ứng dụng của máy chủ được ủy quyền tại địa chỉ http://127.0.0.1:8080.
Đối với các bản phân phối dựa trên cấu hình của Ubuntu hat Debian thì các tệp được lưu trữ ở thư mục /etc/nginx/sites-available. Còn đối với CentOS thì được lưu ở thư mục /etc/nginx/conf.d.
Để có thể hiểu rõ hơn về cách thức hoạt động của location và proxy_pass, hãy theo dõi ví dụ sau đây:
{{EJS1}}
Câu lệnh trên có nghĩa là, khi khách hàng truy cập vào địa chỉ http://example.com/blog/my-post thì Nginx sẽ điều hướng đến địa chỉ http://node1.com:8000/wordpress/my-post.
Khi địa chỉ máy chủ ủy quyền đã chứa một URI trước đó, lúc này URI yêu cầu của máy chủ sẽ được thay thế bằng một URI được chỉ định khác. Trong trường hợp địa chỉ của máy chủ ủy quyền được chỉ định không chứa URI, nó sẽ được cung cấp một URI có yêu cầu đầy đủ.
Khi Nginx xác nhận một yêu cầu, nó sẽ xác định hai tiêu đề trong yêu cầu từ máy khách, Host & Connection, đồng thời xóa các tiêu đề trống. Lúc này Host sẽ trở hành biến $proxy_host và Connection được đặt thành Close.
Để đặt hay điều chỉnh tiêu đề cho các kết nối, bạn có thể sử dụng lệnh proxy_set_header kèm theo giá trị tiêu đề bạn mong muốn. Để tiện cho việc điều chỉnh bạn có thể tham khảo danh sách các tiêu đề có sẵn và các giá trị hợp lệ với câu lệnh. Để ngăn cách giữa các tiêu đề bạn có thể sử dụng chuỗi trống “”
.
Đây là một ví dụ về thay đổi giá trị tiêu đề của Host thành $host đồng thời xóa đi tiêu đề Accept- Encoding bằng cách dùng chuỗi “”
ở chỗ điền giá trị.
{{EJS2}}
Bạn cần khởi động lại Nginx khi có bất cứ chỉnh sửa gì về cấu hình, điều đó giúp các thay đổi sẽ có hiệu lực.
Bạn có thể cấu hình Nginx để làm reverse proxy cho máy chủ không phải HTTP bằng các lệnh như sau:
Dùng Nginx làm reverse proxy cho PHP-FPM là một trong những ví dụ được sử dụng phổ biến nhất:
{{EJS3}}
Ngày nay việc sử dụng giao thức HTTPS đã trở thành một tiêu chuẩn. Sau đây là một ví dụ về cách cấu hình Nginx làm reverse proxy cho HTTPS với các tiêu đề cũng như các thông số proxy được để xuất.
{{EJS4}}
Nếu hiện tại máy chủ của bạn chưa có chứng chỉ SSL/TLS, có thể sử dụng cerbot để SSL Let’s Encrypt hoàn toàn miễn phí trên máy chủ Ubuntu 18.04, CentOS 7 hoặc Debian.
Bài viết trên đã hướng dẫn các bạn cách dùng Nginx để làm Reverse Proxy cũng như các cách chuyển đổi tham số bổ sung đến máy chủ hay chỉnh sửa tiêu đề,…
Hy vọng qua bài viết bạn có thể vận dụng vào quá trình làm việc của mình một cách hiệu quả và chuyên nghiệp, đồng thời cũng mang đến cho các bạn một kiến thức vô cùng hữu ích.
Nếu bạn còn bất cứ câu hỏi nào liên quan đến Nginx Reverse Proxy, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.
Mua Hosting Giá Rẻ tại BKHOST
Hosting siêu tốc – Khuyến mãi cực sốc.
Giá chỉ từ 5k/tháng.