[Case Study] – bị thay đổi IP VPS và Nginx không hoạt động
Mới đây mình gặp 1 case khi nhà cung cấp thông báo đổi IP cho list rất nhiều VPS, và kết quả sau khi đổi là máy chủ Nginx sẽ không hoạt động do IP cũ và IP mới cần phải config và replace lại chúng mới hoạt động bình thường được và bài này là case để bạn đổi nhanh IP từ cũ sang mới để máy chủ Nginx hoạt động trở lại bình thường.
Trước tiên nếu bạn test Nginx sẽ ra lỗi sẽ gặp thông báo lỗi ví dụ như: nginx -t
nginx: [warn] protocol options redefined for 216.73.158.23:443 in /etc/nginx/fastpanel2-sites/vts_usr/vutruso.com.conf:67 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: [emerg] bind() to 216.73.158.23:80 failed (99: Cannot assign requested address) nginx: configuration file /etc/nginx/nginx.conf test failed
Kiểm tra tình trạng Nginx status cũng sẽ báo lỗi như sau: sudo systemctl status nginx
root@vps394:~# sudo systemctl status nginx × nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Thu 2024-03-07 19:14:00 PST; 3min 24s ago Docs: https://nginx.org/en/docs/ Process: 1841 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE) CPU: 8ms
Để giải quyết vấn đề đổi từ IP A sang IP B thì bạn có thể chạy các lệnh sau:
Trước tiên bạn có thể tìm được các file đang config listen IP với lệnh sudo grep -R "216.73.158.183" /etc/nginx/
root@vps394:~# sudo grep -R "216.73.158.23" /etc/nginx/ /etc/nginx/panel2-sites/vutruso_usr/vutruso.com.conf: listen 216.73.158.183:443 ssl http2 ; /etc/nginx/panel2-sites/vutruso_usr/vutruso.com.conf: listen 216.73.158.183:80; /etc/nginx/panel2-sites/vutruso_usr/vutruso.com.conf: listen 216.73.158.183:80; /etc/nginx/panel2-sites/vutruso_usr/vutruso.com.conf: listen 216.73.158.183:443 ssl http2 ;
Sau đó bạn có thể chạy lệnh phía dưới để tìm kiếm và thay thế IP cũ thành IP VPS mới
sudo find /etc/nginx/ -type f -name "*.conf" -exec grep -l "216.73.158.183" {} \; | xargs sudo sed -i 's/216.73.158.183/83.147.43.217/g'
Ví dụ IP cũ là 216.73.158.183
và IP mới là 83.147.43.217
Giờ bạn có thể khởi chạy Nginx với lệnh sudo systemctl start nginx
sau đó enable nginx lên sudo systemctl enable nginx
Sau khi chạy Nginx bạn có thể xem tình trạng Nginx với lệnh sudo systemctl status nginx
Vậy là xong, hy vọng bài viết sẽ giúp ích cho nhiều người đang sử dụng VPS chạy trên máy chủ Nginx và gặp tình trạng bị nhà cung cấp đổi IP đột ngột.