Tuesday, May 9, 2023

หัดทำ Reverse proxy direct ไปเครื่องเดียว ด้วย Nginx บน Ubuntu 22.04

  • โจทย์คือ ใช้  nginx ทำ reverse proxy ที่เครื่อง 192.168.1.1 
  • โดยถ้าเข้าเว็บ http://192.168.1.1 (nginx) ให้มันเบื้องหลังมันไปดึงข้อมูลที่ http://192.168.1.2 (apache)

Step

  • ทดสอบทำกับ /etc/nginx/default กันเหนียวไว้ก่อน

$ sudo cp /etc/nginx/default /etc/nginx/default_old

  • จากนั้นแก้คอนฟิก default site

$ sudo nano /etc/nginx/default

  • ที่ section location / (หรือ location /subfolder แบบ alias ก็ได้เช่นกัน)

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;

}

  • แก้ไขเป็น

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_pass http://192.168.1.2;

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_params ที่มีอยู่แล้ว

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_pass http://192.168.1.2;

include proxy_params;

}

  • สุดท้าย restart nginx

$ sudo systemctl restart nginx

  • ทดสอบเข้าเว็บไซต์
  • http://192.168.1.1 คือที่แสดงผลจะเป็นค่าเหมือนเราเข้า http://192.168.1.2

เพิ่มเติม

  • เราสามารถ ทำ reverse proxy ด้วย alias ได้เช่นเดียวกัน
  • และ proxy_pass เราสามารถระบุพอร์ต อื่นๆ ได้ด้วยเช่น
  • proxy_pass http://192.168.1.2:8080

Ref

  • https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-on-ubuntu-22-04
  • https://www.baeldung.com/linux/nginx-multiple-proxy-endpoints
  • https://stackoverflow.com/questions/37820013/nginx-routing-to-several-restful-endpoints

No comments:

Post a Comment

Popular Posts