Nginx – Unexpected 404 error on all routes laravel application all of a sudden – NGINX|PHP-FPM

http-status-code-404nginx

I have the following nginx config file

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#


server {

    root /var/www/open_final/current;     
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name app.mypersonaldomain.co;
        if ($http_x_forwarded_proto != "https") {
          rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
        }

#        if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') {
#         return 301 https://mobile.mypersonaldomain.co;
#        }
    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.html;
        # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
}


server {

    root /var/www/open-backend-v2/current/public;
    index index.php index.html index.htm;

    server_name localhost v2-api.mypersonaldomain.co;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

I have two applications running on this nginx server. One is a Laravel(PHP) application and an Angular application (Front-end) running. I have noticed that last week, all the backend application (PHP) routes started throwing 404 Not Found errors. I restarted my nginx, still it was coming. Finally I restarted my aws instance and it started working fine. Again yesterday all of a sudden , the URLs started throwing 404 all of a sudden and I had to restart the instance.

The front-end application was loading but the backend (Laravel-PHP) urls was throwing 404.

I suspect if its some hacker doing it. In the past 2 years this was not happening and it started coming from last week.

What could be the reason for it? Is it like someone tampering the .htaccess file or is it something to do with nginx config. But if so why on the laravel application routes are showing 404.

Need help on this. What could be the reason for this ? Has anyone faced this issue ?

Best Answer

Is everything OK with the PHP FPM service? Could be that this service crashes and comes back after the reboot.

Check the status of the service if you get all the 404s and also the logs