Nginx – Reverse Proxies

Ở chương cuối này, chúng ta sẽ tìm hiểu về Reverse Proxies và Load Balancers. Đây là những tính năng mạnh mẽ của Nginx. Có thể được ứng dụng nhiều trong thực tế.

Khi một client kết nối tới proxy/load balancer thì proxy sẽ kết nối tới server ở back-end và trả về kết quả cho client.

Reverse proxy : sẽ kết nối với một server ở back-end.

Load balancer : sẽ kết nối với nhiều server ở back-end.

Reverse proxy

Server có thể là Apache, Tomcat hay Node…

Đầu tiên, chúng ta tạo 1 server back-end, port 3000. Có thể thể dùng Node, Apache… và nằm trên 1 server khác với server Reverse proxy của chúng ta. Ở ví dụ demo, mình sẽ dùng nginx trên cùng server để tạo server này.

Xoá hết config ở những bài trước.

rm /etc/nginx/conf.d/*

Tạo file upstream.conf

sudo nano /etc/nginx/conf.d/upstream.conf

Với nội dung sau

server {
        listen 3000;
        root /var/www/upstream;
}

Save là reload lại nginx.

Tạo file index đơn giản sau

mkdir /var/www/upstream
echo '<h1 style="text-align:center">3000</h1>' > /var/www/upstream/index.html

Kiểm tra kết quả

curl localhost:3000

mở lại file config thêm đoạn code như sau:

code toàn file config


upstream app_server_3000 {
    server 127.0.0.1:3000;
}
server {
    listen 80;
    location /proxy {
        proxy_pass http://app_server_3000/;
    }
}
server {
        listen 3000;
        root /var/www/upstream;
}

Như vậy khi vào /proxy, sẽ kết nối với back-end port 3000 đã tạo ở trên.

Save và reload lại nginx

nginx -t
systemctl reload nginx

Vào http://ip/proxy, kế quả