Chào mọi người, Mình đã từng gặp trường hợp phía FE không thể access vào server công ty (vì authen, policy ,.. nên bị chặn request), giờ làm cách nào để bên FE có thể gọi API phía BE để test nhỉ ? Tất nhiên là ta phải tạo 1 cái server rồi và tìm cách để thiết bị bên FE có thể gọi được server bên phía BE. Bài viết này mình sẽ hướng dẫn 2 cách host server, server nội bộ nếu dùng chung mạng (làm ở trên văn phòng) hoặc server public (làm remote nên không cùng chung mạng được)
Server local
Với server nội bộ thì cách config khá đơn giản, bao gồm 2 bước:
- Start server
Như mình hay làm việc với rails thì khi không set gì thì default nó sẽ start với port 3000, tuy nhiên các bạn lưu ý là phải binding với address 0.0.0.0 thay vì 127.0.0.1. Lý do là vì địa chỉ 127.0.0.1 không thể truy cập từ bên ngoài.
Vd: Trong rails ta sẽ dùng lệnh
rails s -b 0.0.0.0
thay vìrails s
như bình thường - Bỏ chặn firewall port để cho phép truy cập từ bên ngoài
- Với ubuntu ta chỉ đơn giản là gõ lệnh
sudo ufw allow <port>
- Với window thì sẽ rườm rà hơn một chút bạn sẽ phải vào Window Firewall để set rule mở port
Hoàn thành 2 bước trên thì ta chỉ cần tìm IP Private của máy trong mạng nội bộ là đã có thể truy cập vào server rồi
Server public
Tương tự với việc host 1 server nội bộ, ta cũng thực hiện 2 bước ở trên, sau đó thực việc port forwarding tới port đang chạy server. Mục đích là để forward request
- Tìm default gateway cũng là địa chỉ IP của router. Ở đây mình dùng lệnh
ipconfig /all
- Truy cập vào router thông qua địa chỉ vừa tìm được và login (hầu hết username và password mặc định để đăng nhập đều được dán ở phía mặt sau router)
- Tìm đến chức năng port forwarding và config. Tuỳ theo router mà cách config sẽ có đôi chỗ khác nhau nhưng các bạn chỉ cần để ý các giá trị là địa chỉ IP private (địa chỉ IP của máy host server), port cần forward và giao thức sử dụng
- Tìm địa chỉ IP public Tới đây thì bạn đã có thể truy cập server bằng public IP rồi. Kiểm tra bằng website canyouseeme.org
Lưu ý:
Bạn có thể phải cần setting cho router cấp phát IP private tĩnh cho máy host server để tránh trường hợp phải setting lại khi host server được cấp một địa chỉ IP tự động bằng DHCP. Như hình minh hoạ dưới đây Và bạn cũng không nên dùng cách ở hình dưới để setting IP private tĩnh vì đôi khi sẽ xảy ra conflict khi router đã cấp địa chỉ IP mình mong muốn cho một thiết bị khác
Kết
Đây là phương pháp mà mình tự mày mò và nghiên cứu ra, có đôi chỗ giải thích có lẽ không chính xác hoặc khó hiểu mong mọi người đóng góp ý kiến. Chúc các bạn áp dụng thành công!