Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Khắc phục lỗi 404 trên Nginx sau nâng cấp Ubuntu Server

Một trong những kết hợp web server phổ biến nhất hiện nay là Nginx chạy trên Ubuntu Server. Hệ thống này cực kỳ hiệu quả và dễ cập nhật, vì cả hai gói đều nhận cập nhật thường xuyên. Quản trị viên thường cài cập nhật qua trình quản lý gói apt, vì Ubuntu Server không có giao diện đồ họa mặc định.

Nâng cấp Ubuntu Server đôi khi tạo lỗi bất thường, và thiếu GUI khiến người mới khó troubleshoot. Vài lệnh đơn giản có thể khắc phục lỗi 404 Nginx sau nâng cấp Ubuntu.

Phương pháp 1: Sửa trang lỗi Nginx thiếu

Nếu site host trên AWS, server riêng hoặc cấu hình server khác trong LEMP stack, nó có thể down ngẫu nhiên sau nâng cấp Ubuntu Server. Thử truy cập site từ trình duyệt web, có thể trên máy khác. Giả sử trả về lỗi 404, vào CLI Ubuntu Server chạy tail -f /var/log/nginx/error.log xem lỗi gần đây.

Nếu log chứa lỗi như:

open() "/usr/share/nginx/html/50x.html" failed (2: No such file or directory)

Hệ thống bị thiếu trang lỗi. Có thể thấy 40x.html dòng này, tuy hiếm nếu site down và nhận 404. Dùng ls xem có file đó không. Nếu không, tạo HTML code cho trang lỗi 50X.

Lưu ý: dùng cấu trúc thư mục mặc định thường gây vấn đề với trình quản lý gói, có thể ghi đè gì lưu đó. Bạn có thể đổi dòng docroot trong cấu hình Nginx ngăn vấn đề này nếu được phép tạo cấu trúc thư mục tùy chỉnh.

Phương pháp 2: Làm PHP tìm đúng socket

Bạn cũng có thể thấy lỗi như sau trong /var/log/nginx/error.log:

connect() to unix:/var/run/php/php7.0-fpm.sock failed (2: No such file or directory)

Điều này nghĩa là PHP7.0 chạy, nhưng không ở nơi nó nên. Số phiên bản có thể khác tùy cấu hình PHP. Cài mặc định chạy từ /var/run/php/php7.0-fpm.sock hoặc /var/run/php5-fpm.sock, nhưng nếu có lỗi này nhiều khả năng không phải vậy.

Chạy find / -name 'php*fpm.sock' 2>/dev/null xem có socket chạy đâu trên hệ thống.

Giả sử output dương, bạn cần cập nhật cấu hình Nginx chỉ nơi socket nên chạy. Tự nhiên, /directoryPath thay bằng đường dẫn đúng. Dòng unix:/var/run/php/php7.0-fpm.sock nên cập nhật cấu hình nếu dùng file socket.

Người dùng TCP socket cũ không dùng file socket kiểm tra PHP socket có listen cổng 9000 bằng sudo netstat -tulpn | grep 9000. Nếu vậy, mở fastcgi_pass trong nano, vi hoặc editor khác, thay dòng unix:... bằng 127.0.0.1:9000 cập nhật socket.

Nếu không gì hoạt động, chắc chắn php7.0-fpm (hoặc phiên bản bạn dùng) chạy với sudo systemctl restart php7.0-fpm, lặp lại quy trình trên.

Nhớ rằng trong hầu hết trường hợp, entry listen trong /etc/php/7.0/fpm/pool.d/www.conf và giá trị fastcgi_pass trong cấu hình Nginx phải giống nhau. Thử unix:/run/php/php7.0-fpm.sock cho cấu hình mới, hoặc 127.0.0.1:9000 cho kiểu cũ.

VỀ TÁC GIẢ

Khắc phục lỗi 404 trên Nginx sau nâng cấp Ubuntu Server

Kevin Arrows

Kevin Arrows là chuyên gia công nghệ giàu kinh nghiệm với hơn một thập kỷ trong ngành. Anh持有 chứng chỉ Microsoft Certified Technology Specialist (MCTS) và đam mê cập nhật các phát triển công nghệ mới nhất. Kevin đã viết nhiều về các chủ đề công nghệ, thể hiện chuyên môn trong phát triển phần mềm, an ninh mạng và điện toán đám mây. Đóng góp của anh được công nhận rộng rãi và được đồng nghiệp tôn trọng, đặc biệt là khả năng giải thích các khái niệm kỹ thuật phức tạp một cách rõ ràng, súc tích.