Tuesday, May 9, 2023

หัดทำ Reverse proxy to multi endpoint ด้วย Nginx บน Ubuntu 22.04

  • ทำคล้ายๆ กับ direct ip reverse เลย แต่เพิ่มนิดหน่อย
  • ในที่นี้ primary เป็น 192.168.1.1 ส่วน endpoint ที่จะให้ reverse ไปมี 192.168.1.2 และ 192.168.1.3:8080

Step

  • แก้ไข /etc/nginx/default
  • เพิ่ม section upstream ให้อยู่ในระดับเดียวกับ server {...}  และตั้งชื่อที่เราต้องการ (ในที่นี้ตั้งเป็น repositories) พร้อมกำหนดค่าการ IP ที่จะให้ forward ไป

upstream repositories {

#server domain_name.com:443;

server 192.168.1.2;

server 192.168.1.3:8080;

}

server {

    ...

}

  • จากนั้นใน location / section ให้เราตั้งค่าประมาณนี้
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?$args;
proxy_next_upstream error timeout http_404;
proxy_pass http://repositories;
include proxy_params;
}

  • จากนั้น restart nginx

$ sudo systemctl restart nginx

  • ทดสอบระบบโดยเข้าเว็บ http://192.168.1.1
  • หน้าเว็บจะแสดงข้อมูลเหมือนเราเข้าเว็บ http://192.168.1.2 และ http://192.168.1.3:8080 สลับกันไปมาแบบ round robin

เพิ่มเติม

  • ค่าเริ่มต้นในการ reverse น่าจะใช้แบบ round robin นะคือ กระจายไปแต่ละ endpoint เท่าๆ กัน

Related

  • http://juuier.blogspot.com/2023/05/reverse-proxy-direct-nginx-ubuntu-2204.html
Ref
  • https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
  • https://www.bogotobogo.com/DevOps/Docker/Docker-Compose-Nginx-Reverse-Proxy-Multiple-Containers.php

No comments:

Post a Comment

Popular Posts