- โจทย์คือ ใช้ 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;
}
$ 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