NGINX needs a little special setup to handle Laravel as Laravel only really serves one page. All others are served through index.php as a route.

index index.php;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying index.php.
    try_files $uri $uri/ /index.php$query_string;
}

They key parts here are serve index.php as the index page and then using try files when it can’t find $uri serve up index.php and pass the $query_string as the parameters.

A more complete NGINX site config file:

server {
    listen 80;
    listen [::]:80;
    return 301 https://$host/$request_uri;
}

server {

    # SSL configuration    
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name laravel.mydomain.local;
    
    include snippets/ssl.conf;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # Add index.php to the list if you are using PHP
    index index.php;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying index.php.
        try_files $uri $uri/ /index.php$query_string;
    }

    # pass the PHP scripts to FastCGI server
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}

This serves the site as https and forwards any request to http to https. Further it then sends the HSTS header that tells the browser this site always uses https.